レベル: 中級 Emilio F Zegarra (ezegarra@us.ibm.com), Advisory Software Engineer, IBM
2006年 1月 24日 Apache Geronimoは、J2EE(Java™ 2 Platform, Enterprise Edition)アプリケーションを配置するための最新の選択肢です。IBM DB2®は成熟したリレーショナル・データベース製品で、J2EE環境に最適です。IBMのソフトウェア・エンジニア、Emilio Zegarraが、これら2つの製品をJ2EEアプリケーションに統合する方法を詳細に説明します。DB2データベースに接続できるアプリケーションを開発、配置する方法を学び、環境設定に必要な構成ファイルを入手してください。また、EclipseとWTP(Web Tools Platform)プラグイン・プロジェクトを使用して、アプリケーションに必要なさまざまなコンポーネントを組み合わせる方法を学びます。最後に、アプリケーションとDB2構成の配置方法を学びます。
概要:Apache Geronimo
Apache Geronimoプロジェクトは、J2EEに準拠した、オープン・ソースのアプリケーション・サーバーを構築することに成功しました。このアプリケーション・サーバーがとりわけ強力で信頼できる理由は、既存のオープン・ソース・プロジェクトを実装の一部として再利用していることです。ある意味では、Apache Geronimoアプリケーション・サーバーは複数のオープン・ソース・プロジェクトの集合であると言えます。その例として、Apache Geronimoを構成するオープン・ソース・プロジェクトのいくつかを表1に示します。
表1.Apache Geronimoの主なオープン・ソース・プロジェクト
| テクノロジー | オープン・ソース・プロジェクト |
|---|
| Enterprise JavaBeans (EJB) container | Open EJB | | Web container | Jetty, Tomcat | | Java Messaging Service (JMS) messaging | Active MQ | | Lightweight Directory Access Protocol (LDAP) | Apache Directory |
アプリケーション例の開発または配置に以下の製品を使用しています。
- Apache Geronimoアプリケーション・サーバー, Version 1.0(「参考文献」から情報をダウンロードできます。)
- IBM DB2 Universal Database™, Version 8.2
- Eclipse, Version 3.1(オプション)
- Eclipse Web Tools Platformプラグイン・プロジェクト, Version 0.7.1(オプション)
サンプル・アプリケーションについて
この記事でDB2とApache Geronimoの統合のデモに使用するサンプル・アプリケーションは、JSP(JavaServer Pages)が定義されたWebモジュールのアプリケーションです。JSPはreferences.jspと名付けられますが、図1に示すように、データベース内の利用可能なApache Geronimoの参照テーブルに対してクエリーを実行します。
図1. アプリケーションの概要
JSPはデータベースからデータを取得後、そのデータを要求するクライアントに表形式で渡します。サーバーにアプリケーションを配置する前に、データベースの構成を完了する必要があります。そのためには、データベース配置計画を作成します。この配置計画に従い、DB2のデータ・ソース定義をアプリケーションが使用できるようにApache Geronimoサーバーに配置します。
開発環境を設定する
アプリケーションとリソースの開発にはEclipseのIDE(Integrated Development Environment)ツールを使用します。アプリケーションの構築にはWTPプラグインを使用します。このプラグインにより、手早く容易にファイルを編集することができます。(Eclipse Version 3.1およびWTPのダウンロードとインストールについては、「参考文献」を参照してください。)
この記事では、Eclipse Version 3.1を使用したWTP Version 0.7.1を使います。これらの製品をインストールしたくない場合は、お好みのIDEを使用してリソースを構築することができます。ただし、リソース構築方法のセクションでは、これらの製品をインストールしたことを前提に説明します。
Geronimo配置計画
J2EE仕様にはJ2EEプラットフォームのコンポーネントすべての実装に関する詳細が記載されているわけではありません。そのため、仕様でカバーされていない部分については、J2EEサーバーのベンダーが独自のソリューションを提供しなければなりません。Apache Geronimoチームは配置計画を使用して、このような制約に対応し、サーバーに配置されるリソースに関する情報をサーバーに提供しています。配置計画を構成する各要素の詳細については、%GERONIMO_HOME%/schemaフォルダー内の、別のXMLスキーマを参照してください。
手順1:データ・ソースを定義する
データ・ソースに接続する前に、JDBC(Java Database Connectivity)ドライバーをGeronimoに提供する必要があります。サーバーにライブラリーを提供するには、%GERONIMO_HOME%フォルダーの下のリポジトリー・フォルダーを使用します。リソース・ライブラリーをリポジトリーに追加するには、以下の3段階の手順を踏みます。
- ライブラリー名を名前に付けて新規フォルダーを作成し、その下のjarsフォルダーを定義します。
- jarsフォルダーにライブラリーをコピーします。
- ライブラリーにバージョン番号を指定します。つまり、ライブラリー・ファイルの名前を変更するだけです。
この例では、DB2に接続するJDBCドライバーは3つの.jarファイルを使用します。ライブラリーのコピー後、その名前にデータベース・サーバーのバージョン番号を追加します。その結果、物理リポジトリーの定義は図2のようになります。
図2. DB2 JDBCドライバーのリポジトリーの定義
ライブラリーをランタイムに追加後、リスト1に示すようなDB2データ・ソースの配置計画を作成します。dependencyの各エントリーがリポジトリー・フォルダーの下に定義されたJDBCドライバーのライブラリーを参照していることに注目してください。複数のファイルがありますので、ファイルごとにエントリーが必要です。また、configIdパラメーターにはDB2データ・ソースの名前を指定します。後でこのデータ・ソースにWebモジュールをマップするときにこの名前を使用することになります。
リスト1.DB2データ・ソース配置計画
<?xml version="1.0"?>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.0"
version="1.5" configId="DB2Database">
<dependency>
<uri>db2/db2jcc/8.1.7/jar</uri>
</dependency>
<dependency>
<uri>db2/db2jcc_license_cisuz/8.1.7/jar</uri>
</dependency>
<dependency>
<uri>db2/db2jcc_license_cu/8.1.7/jar</uri>
</dependency>
<resourceadapter>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>
javax.sql.DataSource
</connectionfactory-interface>
<connectiondefinition-instance>
<name>DB2Database</name>
<config-property-setting name="UserName">
system
</config-property-setting>
<config-property-setting name="Password">
manager
</config-property-setting>
<config-property-setting name="Driver">
com.ibm.db2.jcc.DB2Driver
</config-property-setting>
<config-property-setting name="ConnectionURL">
jdbc:db2://peru.pittsburgh.ibm.com:50000/db2
</config-property-setting>
<config-property-setting name="CommitBeforeAutocommit">
true
</config-property-setting>
<config-property-setting name="ExceptionSorterClass">
org.tranql.connector.NoExceptionsAreFatalSorter
</config-property-setting>
<connectionmanager>
<local-transaction />
<single-pool>
<max-size>10</max-size>
<min-size>0</min-size>
<blocking-timeout-milliseconds>
5000
</blocking-timeout-milliseconds>
<idle-timeout-minutes>
30
</idle-timeout-minutes>
<match-one />
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
</connector>
|
データ・ソース配置計画の作成は、EclipseのXML編集機能を利用して次の手順で行ないます。
-
File > New > Projectの順に選択し、配置計画ファイルを保持するプロジェクトを作成します。
- プロジェクト名に「DeploymentPlans」と入力し、Finishをクリックします。
-
File > New > Fileの順に選択してデータ・ソースの定義に使用する配置計画ファイルを作成します。親フォルダーとしてDeploymentPlansを選択し、ファイル名に「db2-plan.xml」と入力してください。
-
Finishをクリックします。
- エディターが開いたら、リスト1の内容をエディターに貼り付けます。
-
File > Saveを選択してファイルを保存します。
- この配置計画を後でサーバーに配置できるように、エクスポートします。Project ExplorerビューでOther Projects > DeploymentPlansの順に展開し、db2-plan.xmlを選択します。
- ファイルを右クリックし、Export > File System > Nextの順に選択します。
-
To Directoryフィールドに「%GERONIMO_HOME%/plans」と入力します。plansディレクトリーが存在しない場合は、作成してください。
-
Finishをクリックします。
これでDB2データ・ソースの配置計画が作成できましたので、次にそれをインストールします。ただしその前に、すべてを一度に配置できるように、アプリケーションを構築する必要があります。
手順2:Webモジュール・アプリケーションを作成する
DB2データ・ソースに接続するには、単純なJSPファイルからなるWebモジュールを開発する必要があります。JSPファイルはDB2データ・ソースに対してクエリーを実行し、Geronimoアプリケーション・サーバーの詳細情報を得るための参照リストを引き出します。データ・ソースから取得されたリストには、データが表形式で表示されます。
- Webモジュールを作成します。
-
File > New > Projectの順に選択します。
- Webフォルダーを展開し、Dynamic Web Projectを選択してNextをクリックします。
- 名前に「GeronimoReferences」と入力し、Finishをクリックします。
- JSPを作成します。
-
File > New > Otherの順に選択します。
- Webフォルダーを展開し、JSPを選択してNextをクリックします。
- ファイル名として「references.jsp」と入力します。
- 親フォルダーとしてGeronimoReferences/WebContentを選択します。
-
Nextをクリックします。
- Use JSP Templateのチェックを外し、Finishをクリックします。
- references.jspを編集するためのエディターが開いたら、リスト2に示すコードを入力します。
JSPファイルはまずデータ・ソースを検索し、次に新しい接続を作成します。接続の作成後、ステートメントを作成してクエリーを実行します。JSPのクエリー結果が表になって表示されます。
リスト2.references.jspの内容
<HTML>
<HEAD>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
import="java.sql.*,javax.sql.*,javax.naming.*;"%>
<%
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
Context ctx = null;
String query = "SELECT REFNAME, REFURL FROM REFERENCES";
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myds");
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
%>
<TITLE>Geronimo References</TITLE>
</HEAD>
<BODY>
<H2>Geronimo References</H2>
<P>List of sites with information about the Geronimo Application Server.</P>
<TABLE border="1">
<TR>
<TH>Title</TH>
<TH>URL</TH>
</TR>
<%while (rs.next()) {%>
<TR>
<TD><%=rs.getString(1)%></TD>
<TD><%=rs.getString(2)%></TD>
</TR>
<%}
rs.close();
stmt.close();
conn.close();%>
</TABLE>
</BODY>
</HTML>
|
- Web配置記述子を更新し、データ・ソースのリソース参照を追加します。
- 2EEパースペクティブに切り替えます。
-
Project Explorerビューから、Dynamic Web Projects > Geronimo Referencesの順に展開し、Geronimo Referencesをダブルクリックします。WebモジュールのWeb配置記述子が開かれます。
-
リスト2に示すJSPコードからデータ・ソースへのアクセスは、リソース参照を検索することによって実行されます。リソース参照はアプリケーションの配置記述子に定義する必要があります。リスト3に示すリソース参照定義を使用して配置記述子を更新します。
リスト3.Webモジュール配置記述子 - WEB-INF/web.xmlにおけるデータ・ソースのリソース参照の指定
<resource-ref>
<description />
<res-ref-name>jdbc/myds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
|
- 配置されたデータ・ソースにリソース参照をバインドします。
配置されたリソースへのリソース参照のバインド方法をGeronimoアプリケーション・サーバーに知らせるために、Geronimo配置計画を使用する必要があります。モジュールの種類とアプリケーションに応じてそれぞれの配置計画があります。Webモジュールに対する配置計画の名前はgeronimo-web.xmlです。サーバーにアプリケーションを配置する場合は、標準の配置記述子に加えて、Geronimo配置計画を提供する必要があります。配置計画を作成するには、以下の手順を実行します。
-
File > New > Fileの順に選択します。
-
Geronimo References > Web Content > WEB-INFを親フォルダーとして選択し、ファイル名に「geronimo-web.xml」と入力します。
-
リスト4に示す内容を入力します。
リスト4.Geronimo Webモジュール配置記述子 - WEB-INF/geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/web"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming"
configId="com/ibm/samples/GeronimoReferences.war"
parentId="DB2Database">
<context-root>/GeronimoReferences</context-root>
<naming:resource-ref>
<naming:ref-name>jdbc/myds</naming:ref-name>
<naming:resource-link>DB2Database</naming:resource-link>
</naming:resource-ref>
</web-app>
|
Geronimo Web配置計画を使用して、Web配置記述子に定義されたデータ・ソースのリソース参照を、サーバーで定義されたデータ・ソースのリソースにバインドすることができます。データ・ソースの配置計画の作成時に、データ・ソースに構成IDを割り当てました。データ・ソースに指定された構成IDは、リソース参照とリソースそのものとの間のマッピングを識別するためのものです。
- Webモジュール・アプリケーションをエクスポートします。
- 全リソースの定義の完了後、Webアプリケーションをエクスポートしてサーバーに配置する必要があります。Project ExplorerビューでDynamic Web ProjectsからGeronimoReferencesを右クリックし、Exportを選択します。
-
WAR Fileを選択し、Nextをクリックします。
- WebモジュールとしてGeronimoReferencesを選択し、エクスポート先として%GERONIMO_HOME%/applications/GeronimoReferences.warを指定して、Finishをクリックします。
アプリケーションとDB2配置計画をサーバーに配置する準備が整いました。
手順3:テスト・データベースを作成する
テスト・データベースを作成するには、DB2コマンド・ウィンドウを開いてデータベースにデータを設定します。そのためには、リスト5に示すコマンドを実行します。
リスト5.DB2テスト・テーブルの作成
>db2 connect to SAS user wcc\peru
Enter current password for wcc\peru:
Database Connection Information
Database server = DB2/NT 8.2.0
SQL authorization ID = PERU
Local database alias = SAS
>db2 create table peru.references (refid varchar(10) primary key not null, \
refname varchar(50), refurl varchar(150))
DB20000I The SQL command completed successfully.
>db2 insert into peru.references (refid, refname, refurl) \
values ('0', 'Apache Geronimo', 'http://geronimo.apache.org' )
DB20000I The SQL command completed successfully.
>db2 insert into peru.references (refid, refname, refurl) \
values ('1', 'Apache Geronimo Wiki', 'http://wiki.apache.org/geronimo' )
DB20000I The SQL command completed successfully.
>db2 insert into peru.references (refid, refname, refurl) \
values ('2', 'DeveloperWorks Apache Geronimo', \
'http://www.ibm.com/developerworks.opensource/top-projects/geronimo.html' )
DB20000I The SQL command completed successfully.
>db2 commit
|
手順4:サーバーを起動する
アプリケーションのテストとインストールの前に、Apache Geronimoを起動する必要があります。起動するには、DB2コマンド・ウィンドウを開き、「%GERONIMO_HOME%/bin/startup」と入力します。「Geronimo Application Server started」のメッセージが表示されたら、リソースの配置を続行することができます。(コマンドの実行前に、JAVA_HOMEがSun 1.4.2_08 JDK/JREまたはそれ以降の1.4.2リリースを指すように設定する必要があることに注意してください。)
図3. Apache Geronimoの起動
手順5:DB2データ・ソースを配置する
DB2配置計画を配置するには、Apache Geronimoに付属のTranQL J2EEコネクターを使用する必要があります。この手順は、TranQLコネクターの接続プーリングを利用するために必要です。TranQLと.rarファイルは、Geronimoのインストール先のrepository/tranql/rars/tranql- connector-1.1.rarにあります。
DB2配置計画を配置するには、以下に示すコマンドを入力します。アプリケーション・サーバーにリソースを配置するにはユーザー名とパスワードを指定する必要がありますので、デフォルトのユーザー名「system」とパスワード「manager」を使用してください。
>java -jar bin\deployer.jar --user system --password manager deploy plans\db2-plan.xml repository\tranql\rars\tranql-connector-1.1.rar
手順6:Webモジュール・アプリケーションを配置する
DB2データ・ソースの配置が完了したら、アプリケーションをインストールします。そのためには、もう一度Geronimoの配置ツールを起動し、それに対してインストールするアプリケーションを提供します。この手順では、配置計画は明確に示されていませんが、配置ツールを使用することにより、必要な情報は、アプリケーション開発時に作成されたWebモジュールとGeronimo固有の配置記述子から得られます。アプリケーションをインストールするには、以下のコマンドを入力します。
>java -jar bin\deployer.jar --user system --password manager deploy applications\GeronimoReferences.war
手順7:アプリケーションをテストする
DB2データ・ソースとWebモジュール・アプリケーションの配置が完了したら、アプリケーションをテストできます。テストするには、ブラウザー・ウィンドウを開き、アドレスに「http://localhost:8080/GeronimoReferences/references.jsp」と入力します。
図4に示すようなテスト結果が表示されます。
図4. アプリケーションの実行結果
まとめ
この記事ではApache Geronimoを手短に紹介し、DB2データベースに接続できるアプリケーションの開発、配置方法について説明しました。Apache Geronimoアプリケーション・サーバーにDB2リソースを使用、定義、配置する方法について理解を深めていただけたことと思います。また、EclipseとWTPプラグインを使用してのデモでは、オープン・ソース・ツールによって到達可能なレベルの高さと、近い将来それらがますます使用される理由とを実証しました。
ダウンロード
参考文献 学ぶために
製品や技術を入手するために
議論するために
著者について  | 
|  | Emilio Zegarraは、ペンシルベニア州ピッツバーグのIBM WebSphere Competency Centerで働くソフトウェア・エンジニアです。専門分野はユーザー・インターフェース・デザイン(これについて特許を取得しています)、J2EE、自律型アプリケーション、オブジェクト指向開発などです。Emilioは現在、コンピュータ・サイエンスの博士号の取得を目指してピッツバーグ大学に学んでいます。ピッツバーグ大学で生産工学の理学修士号を取得し、カーネギー・メロン大学で情報技術 - ソフトウェア・エンジニアリングの理学修士号を取得しています。連絡先はezegarra@us.ibm.comです。 |
記事の評価
|