JNDIのAPIを用いてDataSourceオブジェクトを取得する
図32の7行目、8行目でコネクションプールのJDNI名を元にDataSourceを取得しています。Contextオブジェクトのlookupメソッドが外部リソースを探すためのメソッドです。引数はJNDI名を設定しますが、管理コンソールで入力した「jdbc/imoshop」だけでは認識してくれません。頭に「java:comp/env/」をつける必要があります。アノテーションを使えるアプリケーションサーバもあるようですが、GlassFish v2.1.1ではDataSourceを得ることができず、従来通りのコーディングをしています。(アノテーションの場合、DataSourceの宣言の前に
@Resource(name="jdbc/imoshop")
のように管理コンソールで入力したJNDI名がそのまま使えます。今回は、外部ソースを見つけることが目的であるためアノテーションを使えなくても構いませんが、成功した方がいらっしゃればコメント頂ければと思います。
001: public ArrayList getImoshochuCatalogList() {
002: Connection conn = null;
003: Statement statement = null;
004: ResultSet rs = null;
005: ArrayList imoCatalog = new ArrayList();
006: try {
007: Context c = new InitialContext();
008: DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/imoshop");
009: conn = ds.getConnection();
010: statement = conn.createStatement();
011: rs = statement.executeQuery(sql);
012: ImoshochuCatalogItem imoItem = null;
DataSourceオブジェクトからConnectionオブジェクトを取得する
図32の9行目でConnectionオブジェクトを取得しています。コネクションの取得が完了すれば、残りの処理は全く同じです。
おさらい
- 第3回で説明した式言語、JSTLを使ってカタログを作成
- MySQL、MySQL Workbenchのインストールとセットアップ
- GlassFishの管理コンソールを使ってコネクションプールを作成
MySQL WorkbenchとGlassFishの管理コンソールについて体系的に説明することは当連載の目的ではないため、ユーザガイドなどをダウンロードし学習していただければと思います。
サンプルコードとimoshopデータベースのリストア用SQLはページトップに用意しています。ダウンロードしてお使いください。今回のプロジェクトのフォルダ構成は図33の通りです。リストア用SQLはMySQL Administratorのexport機能を使用して作成したものです。MySQL Administratorのimportを使用してデータベースを作成してください。今回までは、非常に簡単なテーブルなので、SQL文の中を見て、皆さんがお使いのデータベース製品に作成されても構いません。なお、ImoshochuCatalogDAOImplについては最終的な第2版のみ収録していますのでご了承ください。
次回は芋焼酎酒店の買い物かごの実装をします。

