WAS-CEをインストールした
WASの面影が無い
まさにgeronimoだった
それはいいとして、WAS-CEでJDBCプロバイダってどうやって作成するんだ・・・
というわけで、セッティング。
【環境】
WebSphere Application Server Community Edition 2.0.0.1
DB2 9.5
開発環境にEclipseを使うならWAS-CEのサーバアダプタをインストールしておこう!
update siteはこちら。
http://download.boulder.ibm.com/ibmdl/pub/software/websphere/wasce/updates/
(注意)
Geronimoをインストールしている場合、環境変数「GERONIMO_HOME」を外しておくこと。
WAS-CEがGERONIMO_HOMEにあるgeronimoを見に行ってしまう。
#WAS-CEを初回起動したとき、コンソール画面がそのまんまGeronimoで思わず突っ込みを入れてしまった。
正しい画面を開いても、Geronimoそのままって感じですが。
(※見た感じはGeronimoの青い画面が紫になっただけ)
【前提】
DB2とWAS-CEはインストールしておいて、立ち上げておく。
DB2にはsampleデータベースをインストールしておく。
【手順】
WAS-CEの管理コンソールから「Database Pools」の管理画面を開く。
「Using the Geronimo database pool wizard」というリンクから、
新規にデータベースプールを作成する。
Create Database PoolのStep1画面が開くので、とりあえず、以下のように設定する。
Name of Database Pool:DB2Pool
Database Type:DB2
次のページ(Step2)に移ると、JDBCドライバを選択する画面になる。
しかし、DB2 9.5用のドライバが見当たらない。
「Download a Driver」というリンクボタンを押しても、DB2 9.5用のダウンロード先が出てこない。
そこで、DB2 9.5のインストール先からjarファイルをコピーする。
まず、9.5用のディレクトリを以下の場所に作成する
{WAS-CEのインストールホーム}/repository/com/ibm/db2/db2jcc/
9.5上記ディレクトリに、以下のdb2jcc.jarファイルをコピーして、「db2jcc-9.5.jar」という名前にリネームする。
{DB2 9.5のインストールホーム}/java/db2jcc.jar
↓
{WAS-CEのインストールホーム}/repository/com/ibm/db2/db2jcc/
9.5/db2jcc-9.5.jarで、もう一度、先ほどのCreate Database PoolのStep2画面に戻る。
すると、Dirver Jar一覧の中に、先ほどコピーした9.5用のドライバが出現するので、それを選択する。
あとはDB2の設定環境をそのまま入力。
DBのユーザ名、パスワードを入れて、
ホストやポートの設定をおこなう。
設定が終わったら、次のページ(Step 3)に行く。
ここでは、Final Pool ConfigurationとしてDBの接続テストを行う。
何も気にせず、「Test Connection」ボタンを押せばいい。
 |  |  |
| Create Database Pool -- Step 3: Final Pool Configuration Cancel |
成功すると、以下のような画面が出る。
 |  |  |
| Create Database Pool -- Step 4: Test Connection Cancel |
Deployボタンを押したら、設定完了。
設定が完了したところで、登録されたかどうかを確認する。
Geronimo、もといWAS-CEの管理コンソールより、「JNDI Viewer」を開く。
Search Textと書いてあるボックスに、先ほど設定したデータベースプール名「DB2Pool」を入力して、Findボタンを押す。
すると、「ResourceAdapterModule」という項目の配下に、
console.dbpool/DB2Pool/1.0/rar
という項目が出てくる。ちなみにrarというのはリソースアダプタ。決して圧縮解凍ではない。
次は、管理コンソールから離れて、Eclipse上で作業を行う。
新規プロジェクトで、[Web]-[動的 Web プロジェクト]を選択して、プロジェクトを作成する。
ここでは、プロジェクト名を「wasce_jndi_sample」とする。
ターゲットランタイムは「IBM WASCE v2.0 デフォルト構成」とする。
※一覧になければ、右側の新規ボタンを押して、「新規サーバ・ランタイム画面」から選択する。
「新規サーバ・ランタイム画面」になければ、その画面右上にある「追加サーバ・アダプターのダウンロード」リンクを押して、WASCEv2.0のアダプタをダウンロードする。
プロジェクトを作成したら、WEB-INF/web.xmlに以下を追加する。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>wasce_jndi_sample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>lookup</servlet-name>
<servlet-class>DSLookup</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>lookup</servlet-name>
<url-pattern>/lookup</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>jdbc/DB2DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
次に、geronimo-web.xmlを編集する。
編集しようとすると、Geronimo配備プラン・エディターという画面に切り替わるので、
画面下にある「ネーミング」タブを選択する。
左上に「リソース参照」という項目が出るので、その中の「追加」ボタンを押して、
以下の設定で登録する。
参照名:jdbc/DB2DataSource
リソース・リンク:DB2Pool
次に、「デプロイメント」タブを押して、依存関係の設定を行う。
追加ボタンを押して、以下の設定で登録する。
グループID: console.dbpool
アーティファクトID: DB2Pool
バージョン:
Artifact Type:
これで環境面の設定は一通り完了。
ようやくネーミングを行うソースの作成に入れる。長い・・・。
DSLookup.javaを追加する。ソースの中身は以下のとおり。
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class DSLookup extends HttpServlet {
DataSource ds = null;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
Context context = null;
PrintWriter pw = res.getWriter();
try {
context = new InitialContext();
pw.println("get InitialContext: ok
");
}
catch(NamingException ne) {
pw.println("get InitialContext: ng
");
ne.printStackTrace(pw);
}
try {
ds = (DataSource)context.lookup("java:comp/env/jdbc/DB2DataSource");
pw.println("get DataSource: ok
");
Connection conn = ds.getConnection();
pw.println("get Connection: ok
");
} catch(NamingException ne) {
pw.println("get DataSource: ng
");
ne.printStackTrace(pw);
} catch (SQLException se) {
pw.println("get Connection: ng
");
se.printStackTrace(pw);
}
}
}
ここまでで、必要な資材は準備完了。
Eclipseのプロジェクト・エクスプローラ画面から、wasce_jndi_sampleプロジェクトを右クリックして、
[エクスポート]-[WARファイル]を選択する。
適当なディレクトリに「wasce_jndi_sample.war」をエクスポートする。
次に、WAS-CEの管理コンソールより、「Deploy New」画面を開く。
Archive:は先ほど出力したwarファイルを選択する。
Plan:は、Eclipseのwasce_jndi_sample内にあるgeronimo-web.xmlを選択する。(先ほど編集してたやつね)
Start app after install のチェックをつけて、「install」ボタンを押す。
これで、デプロイ完了。
あとはブラウザからサーブレットにアクセスする。
web.xmlの編集にて、サーブレット名をlookupと指定したので、アクセスURLは以下のようになる。
http://localhost:8080/wasce_jndi_sample/lookup
こんな感じの画面が表示されれば成功!
get InitialContext: ok
get DataSource: ok
get Connection: ok
brタグが余計だったorz