システム構築チュートリアル

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を起動し、初期設定を行います。

../_images/tutorial_01.png

ワークスペースはデフォルトのままOKを押してください。 次に、Window→設定 →Javaを開き、インストール済みJREの追加を行います。 こちらの画面から追加を押してください。

../_images/tutorial_02.png

標準VMを選択し、JREホームでJDKがインストールされたディレクトリを指定します。

../_images/tutorial_03.png

選択が終わったら完了を押します。

JRE一覧画面に戻ったら、今追加したJDKの方をチェックしておきます。

../_images/tutorial_04.png

続けて、サーバ→ランタイム環境を開き、「追加」を押します。さらに、Apache Tomcat v6.0を選び、「次へ」を押します。

../_images/tutorial_05.png

Tomcatインストールディレクトリを選択肢、JREは先ほど追加した物(例:jdk1.6.0_26)に変更します。 入力が終わったら完了を押してください。

../_images/tutorial_06.png

データベースの作成

開発環境上での単体テストを行うため、データベースの設定を行います。データベースは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>

なお、この入力例では

  1. データベースとして smf を作成

  2. ユーザとして smf を作成し、 smf データベースに対するアクセス権限を付与 (パスワード smf )

  3. mysql.sqlの内容に従って初期化

という順序で処理を行っています。 異なる環境、異なるデータベースを作成する場合はこれに合わせて作業を行ってください。

デモWebUIのインポート

開発環境のEclipseで、デモWebUIのソースコードをインポートします。

プロジェクトファイルのインポート

SMF SDK からデモWebUIのEclipseプロジェクトをインポートします。

Eclipseのファイル→インポートからパッケージに含まれるrs-webui.zipをインポートします。

../_images/tutorial_07.png

zipファイルの指定を行い、完了ボタンを押すとインポートが行われます。 インポートが完了したら、プロジェクトのうち、以下のファイルを変更します。

testフォルダの追加。以下のディレクトリを作成してください。

  • test/cli/java

  • test/cli-sdk/java

build.propertiesに以下の2行を追加してください:

wtp.deploy-name=rs2-webui
wtp.context-root=rs
../_images/tutorial_08.png

続けて、antビルドにて prepare-eclipse を実行します。

../_images/tutorial_09.png

実行が完了したら、プロジェクトをリフレッシュ(プロジェクトを右クリック→ リフレッシュか、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との連携が行えるよう設定します。 メニューからファイル→新規作成→サーバを選択します。

../_images/tutorial_10.png

Tomcat v6.0 サーバーを選択し、「次へ」を押します。

../_images/tutorial_11.png

rs2-webuiを構成済み側に追加し、「完了」を押します。

../_images/tutorial_12.png

続けて、Tomcatサーバのユーザ設定を変更します。Servers→tomcat-users.xmlを開き、以下のように必要なユーザ設定を追加してください。

<user username=''admin'' password=''hogehoge'' roles=''SMFV2_USER,SMFV2_ADMIN''/>

この例では、ユーザ名「admin」、パスワード「hogehoge」とし、WebUIのユーザ権限と管理者権限を両方持つユーザが定義されます。

設定が完了したら、サーバ上で右クリックし、「公開」を押します。

../_images/tutorial_14.png

WTP用Antビルドの実行

Antビルドの実行にて、 prepare-wtp をターゲットにして実行します。

../_images/tutorial_15.png

ビルドが成功したら、再度プロジェクトをリフレッシュしてください。

Tomcatの起動

Tomcatを起動します。

../_images/tutorial_16.png

正常に起動が完了すると、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にアクセス します。

正常に設定が完了していると、以下のようなログイン画面が表示されます。

../_images/tutorial_17.png

ユーザ名 admin 、パスワード hogehoge としてログインしてください。

ここまで成功すると、Eclipse上での開発準備が整ったことになります。 あとは、直接ソースコードをカスタマイズするにあたり、RS-API Javadoc等を参考にして実装を行ってください。