@IT > Java Agile > Java TIPS >JNDI活用でデータソース管理を一元化する |
データベースの接続情報は、開発環境から実行環境への移行や、アプリケーションをパッケージとして配布する際に変更する必要があります。この情報は大概「.jsp」ファイルや「.java」ファイルに分散して記述されており、実行環境への移行やパッケージとしての配布の際に、修正漏れや間違いを引き起こしやすい要因といえるでしょう。 この問題を解決する方法の1つに、JNDI(Java Naming and Directory Interface)を使って環境に依存する(かつアプリケーション内で共通して使用する)情報をアプリケーション上で一元的に管理するというテクニックがあります。JNDIを採用することで、個々の「.jsp」「.java」ファイルにいちいち接続情報を記述する必要はなくなりますし、接続先のデータベースに変更があった場合にも容易に変更が可能となります。もちろん、「.java」ファイルのコンパイルなども不要になります。 ■操作手順 (1)server.xmlを編集する Tomcatのサーバ設定ファイルserver.xmlは、Tomcatインストールフォルダ配下の「conf」フォルダに含まれています。 server.xmlをテキストエディタなどで開き、以下のように追加してください。赤字部分が追記するコードです。アプリケーションパス、アプリケーション名は、共に「javatips」とします。
データベースへの接続設定は、アプリケーション(コンテキスト)単位で<Context>要素に記述します。データベースリソースの概要情報(外部リソース名やリソースの種類など)は<Resource>要素に、リソースに渡すパラメータ情報は<ResourceParams>要素に記述します。 <ResourceParams>要素に設定可能な主要なパラメータは以下のとおりです。
factory、driverClassName、urlパラメータは必須指定です。なお、接続文字列に「&」が含まれている場合、必ず「&」のようにエスケープする必要がありますので、注意してください。 (2)web.xmlを編集する server.xmlで設定したデータソースをアプリケーション上で有効にするには、アプリケーション単位にweb.xml(例えば、「/webapps/javatips/WEB-INF/web.xml」)を設定する必要があります。 web.xmlをテキストエディタなどで開き、以下の内容を追加してください。web.xml上では要素の記述順も厳密に定められていますので、自分の環境に応じて、適切な個所に記述を追加してください。
<resource-ref>要素配下の子要素の意味は、それぞれ以下のとおりです。
<res-type>、<res-auth>要素は、ここでは固定値と思っておいて問題ないでしょう。なお、server.xml、web.xmlを編集した後は、必ずTomcatの再起動を忘れないようにしてください。ここまででデータソースの設定は完了です。 (3)データソースに接続する「.jsp」ファイルを記述する それでは、いよいよ「.jsp」ファイルを設置して、データソースに対して接続ができることを確認してみることにしましょう。 テキストエディタで新規文書を作成し、以下の「.jsp」ファイルを作成してみてください。
任意のファイル名で保存した「.jsp」ファイルに対して、ブラウザから問題なくアクセスできれば成功です。 Context#lookupは、登録された外部リソースを検出するためのメソッドで「java:comp/env/外部リソース名」の形式で指定します。lookupメソッドの戻り値はObjectオブジェクトですので、使用に際しては必ず「型のキャスト」を行うのを忘れないようにしてください。 取得したDataSourceオブジェクトのgetConnectionメソッドでConnectionオブジェクトを取得してしまえば、あとは通常のデータベース手続きとまったく同様です。データソースを再びコネクションプールに戻すために、closeメソッドは絶対に忘れないようにしてください(さもないと、使用中のデータソースが累積し、後続のリクエストがエラーとなってしまいます)。
|
|