GlassfishでJNDIデータソースの設定方法その1

ちょうどJNDIの話がでていたのとおとなり日記でTomcat5の設定方法を目撃したので.

いくつか方法があるけど,まずは管理ツールを使う方法.これが一般的だと思う.

ログインしたら左にあるメニューからJDBCのところを探します.JDBC接続リソースとコネクションプールの2つに別れています.JDBC接続リソースは単にJNDIでの名前を設定するだけです.プールを先に設定しておいてどのプールを使うのかといったことを設定します.つまり接続先を帰る場合はこの変更画面でドロップダウンリストからかえるだけとなります.


先に接続プールを作成します.DB一覧から選ぶとドライバの名前など面倒な設定がいりません.もちろん,ここにないものでも使うことが出来ます.


追加プロパティにはあらかじめプロパティ名はすでに設定されているので右側のテキストフィールドのみを入力するわけです.いらなそうなのは削除して4つだけに絞り込みました.接続URLのフォーマットとか何も知る必要がないのに注目です.ちなみにこのプロパティの上のほうにはプールの際に有効ないろんな設定項目があります.最大接続数とかアイドル状態になったらプールを2個ずつ切断するとか,アイドル状態の判定に使う時間とか,トランザクションの設定とか.


設定が完了したらこのPINGボタンをクリックしましょう.接続に成功すればパスワード等の設定にミスがないことがわかります.


そして2つめの設定箇所であるJDBCのデータソースのJNDI名です.ドロップダウンリストに接続プールが表示されますのでそれで手軽にDBをかえることが可能です.ここで設定した名前でJNDIから取得できます.軽く確認したところ一応アプリケーションサーバーにデプロイされていないアプリからもこのデータソースは取得可能でした.


つまり,xmlを熟知している必要があるTomcat(5.5までは管理ツールが一応あるけど)と違いGlassfishGUIによるお手軽設定が可能です.

データソースの取得方法はJavaSE6ならばstaticメンバのメソッドで可能ですし,ジェネリクスを使用してキャストの必要がありません.

DataSource ds = InitialContext.doLookup("jdbc/hoge");

アプリケーションサーバーに配備されるのが前提ならばサーブレットEJBJSFの管理ビーン,フィルター等ではDIによる取得が可能です.おそらくEJB3.1の時代になれば使える機会は増えるものだと思われます.

@Resource(name="jdbc/hoge")
private DataSource ds;

ちなみに@Resource等はJavaEE5のアノテーションでしたが,JavaSE6からは標準アノテーションの仲間入りをしています.ほかにもJAX-WSとかも.JavaSEでなかったオプションの機能がSEに実装されてきたのは今までも大量にありますが,今後は加速しそうな気もします.




ちなみにこの管理ツール何気なく使っている人がいると思いますが,これがJSF+Woodstockです.NetBeansでのJSF開発環境であるVisual Web JSFでの基本環境ですね.こういう画面がVBDelphi,BCBのようにぺたぺた貼り付けて簡単に作れるわけです.おいらの日記には頻繁にVisualWebJSFの話が出てきた理由がわかると思います.