システム構築チュートリアル¶
SMF SDKには、すぐに使うことができる「デモWebUI」アプリケーション一式と、そのソースコードが含まれています。 デモWebUIをそのままお使いいただくことも可能ですが、必要に応じてカスタマイズすることもできます。
本章では、デモWebUIのソースコードを元に、実際にJava統合開発環境Eclipse上で開発・カスタマイズを行うための方法について解説します。
作業の流れ¶
このチュートリアルでは、以下のような手順で作業を進めていきます。
- 機材・ソフトウェアの準備
開発及びテストに必要な機材等を準備します。
- 開発環境の構築
開発作業は、Oracle JDK 6がインストールされているWindowsマシン上で行います。 開発環境は実行環境と異なる環境でも構いません。
- デモWebUIのインポート
デモWebUIのソースコードを、Eclipse上にインポートします。 SMF SDK には、デモWebUIのEclipse用プロジェクトファイルが含まれており、これをそのまま用いることができます。
- デモWebUIの動作確認
Eclipse上で連携したTomcatから、デモWebUIにアクセスできることを確認します。
機材の準備¶
開発環境として以下の機材を準備することとします。
開発環境¶
- Oracle JDK 6がインストール可能なWindowsマシン
Oracle JDK 6がインストールできるマシンなら何でも構いませんが、ここではWindowsマシンを用いることにします。 これと合わせて統合開発環境のEclipseも用いますので、できるだけメモリを多く搭載したマシンを用意されることをお勧めします。
開発環境の構築¶
以下の手順に沿って開発環境の構築を行っていきます。 既にインストール済みのソフトウェアがある場合は手順を飛ばしても構いません。
Oracle JDK 6のインストール¶
以下のURLからOracle JDK 6をダウンロードし、インストールします。
インストールが終わったら、ダウンロードしたファイルを実行してインストールを行います。 なお、インストールオプションは標準のままで構いません。
JCEプロバイダのインストール¶
SMF SDKではサービスアダプタとの通信にSSLを利用するためJCEプロバイダ(Bouncy Castle Crypto API)をインストールする必要があります。 必要なライブラリはRS-APIのパッケージに含まれています。
(SMF SDK パッケージ):\RS\rs-api-X.XX.zip
(展開したrs-api-X.XX)\lib\bcprov-jdk15-XXX.jar
このライブラリを %JAVA_HOME%\jre\lib\ext にコピーし、%JAVA_HOME%\jre\lib\security\java.security に以下の行を追記してJCEプロバイダを有効にしてください。
security.provider.X=org.bouncycastle.jce.provider.BouncyCastleProvider
上記のX部分はインストール済みのJDK環境に応じて書き換えてください。 標準付属のJCEプロバイダより上位にインストールすると予期せぬ問題が起こることがあります。
Eclipseのインストール¶
Eclipseは、Javaの統合開発環境として広く使われているソフトウェアです。 SMF SDKでも、RSの開発環境として使うことができます。 本チュートリアルではEclipseとして各種プラグインが統合された「Pleiades All in One」を用いて開発を行うことにします。
まず、以下のURLからPleiades All in Oneをダウンロードします。
Eclipse 3.7 Indigo Pleiades All in One から、JavaもしくはUltimateパッケージのJRE無し版を選択し、zipファイルを適当なディレクトリ(c:\pleiadesなど)に展開します。
Tomcatのインストール¶
チュートリアルではServletを利用してRSを実装しているためJ2EEのServlet Containerが必要です。 ここではTomcat 6.0を利用します。
以下のURLからTomcat 6.0をダウンロードします。
ダウンロードしたファイルapache-tomcat-6.0.X.exeを実行し、インストールを行います。
Eclipseの初期設定¶
c:\pleiades\eclipse\eclipse.exeを起動し、初期設定を行います。
ワークスペースはデフォルトのままOKを押してください。 次に、Window→設定 →Javaを開き、インストール済みJREの追加を行います。 こちらの画面から追加を押してください。
標準VMを選択し、JREホームでJDKがインストールされたディレクトリを指定します。
選択が終わったら完了を押します。
JRE一覧画面に戻ったら、今追加したJDKの方をチェックしておきます。
続けて、サーバ→ランタイム環境を開き、「追加」を押します。さらに、Apache Tomcat v6.0を選び、「次へ」を押します。
Tomcatインストールディレクトリを選択肢、JREは先ほど追加した物(例:jdk1.6.0_26)に変更します。 入力が終わったら完了を押してください。
データベースの作成¶
開発環境上での単体テストを行うため、データベースの設定を行います。データベースはMySQLもしくはOracleが推奨となりますが、ここではMySQLを使用することにします。
データベースのインストール
すでにMySQLがインストールされた環境を持っている場合はそちらを使用してください。 もし環境が無い場合は、Windows用のMySQLをインストールすることができます。
以下のURLからMySQL 5.1系の最新版をダウンロードします。
ダウンロードしたら、これを実行してインストールを行います。 インストール方法の詳細等については、MySQL添付のドキュメントを参考にしてください。
データベースの初期設定
RS-APIライブラリで使用するデータベーススキーマを作成し、権限の設定を行います。
まず、SMF SDK からRS-APIのパッケージを展開し、データベーススキーマをコピーします。
(SMF SDKパッケージ):\RS\rs-api-X.XX.zip
(展開したrs-api-X.XX)\sql\mysql.sql
を、適当なディレクトリ(c:\tmp)などにコピーしてください。
次に、「スタート」→「ファイル名を指定して実行」を選択し、 cmd を実行します。 コマンドライン画面が表示されたら、以下のように入力します:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\>mysqladmin -u root -p create smf
Enter password: ********
C:\>mysql -u root -p smf
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or {\textyen}g.
Your MySQL connection id is 5
Server version: 5.1.X MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> grant all on smf.* to 'smf'@'localhost' identified by 'smf';
mysql> source c:\\tmp\\mysql.sql
(省略)
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
なお、この入力例では
データベースとして smf を作成
ユーザとして smf を作成し、 smf データベースに対するアクセス権限を付与 (パスワード smf )
mysql.sqlの内容に従って初期化
という順序で処理を行っています。 異なる環境、異なるデータベースを作成する場合はこれに合わせて作業を行ってください。
デモWebUIのインポート¶
開発環境のEclipseで、デモWebUIのソースコードをインポートします。
プロジェクトファイルのインポート¶
SMF SDK からデモWebUIのEclipseプロジェクトをインポートします。
Eclipseのファイル→インポートからパッケージに含まれるrs-webui.zipをインポートします。
zipファイルの指定を行い、完了ボタンを押すとインポートが行われます。 インポートが完了したら、プロジェクトのうち、以下のファイルを変更します。
testフォルダの追加。以下のディレクトリを作成してください。
test/cli/java
test/cli-sdk/java
build.propertiesに以下の2行を追加してください:
wtp.deploy-name=rs2-webui
wtp.context-root=rs
続けて、antビルドにて prepare-eclipse を実行します。
実行が完了したら、プロジェクトをリフレッシュ(プロジェクトを右クリック→ リフレッシュか、F5キーを押す)したあと、Eclipseをいったん終了し、再起動し てください。
ログ出力設定の変更¶
動作状況の確認をやりやすくするため、ログ出力の設定を変更します。 src/cli/resources/log4j.propertiesを変更します
log4j.logger.jp.smf.rs.webui = debug,console
log4j.logger.jp.smf.rs.api = debug,console
このように変更しておくと、コンソールにログが出力されるようになります。 ただし、出荷用warファイルの作成時には元に戻しておくよう注意してください。
JDBCドライバの取り込み¶
次にMySQLのドライバをプロジェクトに追加する必要があります。 以下のURLよりJDBCドライバをダウンロードしてください。
ファイルをダウンロードしたら展開し、mysql-connector-java-X-bin.jarファイルをプロジェクトのweb/WEB-INF/lib/以下へコピーします。
Tomcatサーバの作成¶
Eclipse上で、WTPを用いてTomcatとの連携が行えるよう設定します。 メニューからファイル→新規作成→サーバを選択します。
Tomcat v6.0 サーバーを選択し、「次へ」を押します。
rs2-webuiを構成済み側に追加し、「完了」を押します。
続けて、Tomcatサーバのユーザ設定を変更します。Servers→tomcat-users.xmlを開き、以下のように必要なユーザ設定を追加してください。
<user username=''admin'' password=''hogehoge'' roles=''SMFV2_USER,SMFV2_ADMIN''/>
この例では、ユーザ名「admin」、パスワード「hogehoge」とし、WebUIのユーザ権限と管理者権限を両方持つユーザが定義されます。
設定が完了したら、サーバ上で右クリックし、「公開」を押します。
WTP用Antビルドの実行¶
Antビルドの実行にて、 prepare-wtp をターゲットにして実行します。
ビルドが成功したら、再度プロジェクトをリフレッシュしてください。
Tomcatの起動¶
Tomcatを起動します。
正常に起動が完了すると、EclipseのConsoleで以下のように表示されます。
2011/07/14 22:20:13 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal
performance in production environments was not found on the
java.library.path:
2011/07/14 22:20:13 org.apache.tomcat.util.digester.SetPropertiesRule
begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting
property 'source' to 'org.eclipse.jst.j2ee.server:rs2-webui' did not
find a matching property.
2011/07/14 22:20:14 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8080 で初期化します
2011/07/14 22:20:14 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 573 ms
2011/07/14 22:20:14 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2011/07/14 22:20:14 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.32
2011/07/14 22:20:14 APIConfiguration [#main] INFO load
rs-api.properties on classpath
2011/07/14 22:20:14 APIFactory [#main] INFO system property:
smf.home=null
2011/07/14 22:20:14 ConfigurationManager [#main] INFO system property
smf.home is not defined
2011/07/14 22:20:14 APIFactory [#main] INFO APIFactory is created with
user specified APIConfiguration
2011/07/14 22:20:14 APIFactory [#main] INFO API version: 3.1-0 (18108)
2011/07/14 22:20:14 APIFactory [#main] INFO Hibernate version:
3.3.2.GA
2011/07/14 22:20:14 APIFactory [#main] INFO reading API configuration
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
ca.key.length=2048
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
proxy.timeout.replay.sync=180
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
request.configure.expire=180
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
sa.certificate.key.length=1024
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
database.password=demo
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
request.expire=60
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
proxy.timeout.replay.async=10
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
database.type=mysql
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
database.username=demo
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
proxy.timeout.connect=3
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
ca.key.algorithm=rsa
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
database.driver_class=com.mysql.jdbc.Driver
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
sa.push_port.proposal=443
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
database.url=jdbc:mysql://localhost/demo
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
ca.signature.algorithm=SHA1WITHRSA
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
sa.certificate.signature.algorithm=SHA1WITHRSA
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
request.expire.proposal=50
2011/07/14 22:20:15 APIFactory [#main] INFO reading APIConfiguration:
sa.certificate.key.algorith=rsa
2011/07/14 22:20:15 APIFactory [#main] INFO setup DatabaseManager
2011/07/14 22:20:16 HolderManager [#main] INFO setup HolderManager
2011/07/14 22:20:16 HolderManager [#cache_purge] DEBUG purging cache
object
2011/07/14 22:20:16 HolderManager [#cache_purge] DEBUG purged cache: no
object to purge
2011/07/14 22:20:16 ProxyController [#main] INFO setup ProxyController
2011/07/14 22:20:16 EventManager [#main] INFO setup EventManager
2011/07/14 22:20:16 APIFactory [#main] INFO checking JCE provider
2011/07/14 22:20:16 APIFactory [#main] INFO JCE provider is loaded
2011/07/14 22:20:16 APIFactory [#main] INFO setup completed
2011/07/14 22:20:17 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1を http-8080 で起動します
2011/07/14 22:20:17 org.apache.jk.common.ChannelSocket init
情報: JK: ajp13 listening on /0.0.0.0:8009
2011/07/14 22:20:17 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/18 config=null
2011/07/14 22:20:17 org.apache.catalina.startup.Catalina start
情報: Server startup in 3777 ms
デモWebUIの動作確認¶
ブラウザでの動作確認¶
開発環境上でInternet Explorerなどのブラウザを用いて、以下のURLにアクセス します。
正常に設定が完了していると、以下のようなログイン画面が表示されます。
ユーザ名 admin 、パスワード hogehoge としてログインしてください。
ここまで成功すると、Eclipse上での開発準備が整ったことになります。 あとは、直接ソースコードをカスタマイズするにあたり、RS-API Javadoc等を参考にして実装を行ってください。