JBoss ASのデータソース設定
JBoss Advent Calendar 2011の5日目のエントリです。今日はデータソースについて解説します。一応ターゲットとするバージョンはJBoss AS 5, 6系ということにします。JBoss AS 7では記述フォーマットは異なりますが各設定要素は大体一緒なのでAS7でも応用が効くでしょう。以下JBoss ASは5系または6系という前提で書きます。
JBoss ASでは [任意の名前]-ds.xml というデータソース設定ファイルをデプロイすることでデータソースが利用できるようになります。まずはこの最低限かつ典型的なデータソース設定の例を以下に挙げます。例ではPostgreSQLを使用しています。
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>PostgresDS</jndi-name> <connection-url>jdbc:postgresql://[servername]:[port]/[database name]</connection-url> <driver-class>org.postgresql.Driver</driver-class> <user-name>x</user-name> <password>y</password> <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.PostgreSQLValidConnectionChecker</valid-connection-checker-class-name> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.PostgreSQLExceptionSorter</exception-sorter-class-name> <!-- <set-tx-query-timeout>true</set-tx-query-timeout> --> <min-pool-size>5</min-pool-size> <max-pool-size>40</max-pool-size> <blocking-timeout-millis>5000</blocking-timeout-millis> <prepared-statement-cache-size>100</prepared-statement-cache-size> <metadata> <type-mapping>PostgreSQL 8.0</type-mapping> </metadata> </local-tx-datasource> </datasources>
英語の説明は以下にあります。
http://community.jboss.org/wiki/ConfigDataSources
- <jndi-name>
- <connection-url>
- データベースの接続URLを指定します。接続URLのフォーマットはデータベース依存であり、URL末尾に?foo=barのようにパラメータを付与することで設定を記述することもできるようになっているデータベースが多いです(が、設定の見通しが悪くなるので<connection-property>要素を使う方が賢明です)。
- <driver-class>
- <user-name>と<password>
- 説明するまでもないですね。データベース接続に利用するユーザ名とパスワードです。パスワードを平文で書きたくない場合は暗号化することもできます。後日紹介するかもしれません。
- <valid-connection-checker-class-name>
- コネクションの障害検出を行うためのクラスです。<valid-connection-checker-class-name>を指定する方法の他に、<check-valid-connection-sql>select 1</check-valid-connection-sql>というように障害検知に利用するSQLを指定するものもあります。開発時にはあってもなくても構いませんが、試験以降は<valid-connection-checker-class-name>と<check-valid-connection-sql>のどちらかは絶対指定するようにしましょう。指定が無いとコネクションの障害検知をしない、ということになります。
- <exception-sorter-class-name>
- <set-tx-query-timeout>
- <min-pool-size>と<max-pool-size>
- コネクションプールのサイズ指定です。今時コネクションをケチる理由も無いと思うので、たっぷり指定しておけば良いと思います。
- <blocking-timeout-millis>
- コネクションプールに利用可能なコネクションが無いときに、最大何ミリ秒コネクションの返却を待つかを指定します。待ってもコネクションが取得できなかった場合はjavax.resource.ResourceExceptionがスローされます。
- <prepared-statement-cache-size>
- PreparedStatementのキャッシュサイズ指定です。こちらもケチる理由はないはずなので、たっぷり指定しておけば良いと思います。
- <metadata>と<type-mapping>
次回からはデータソース設定をもうちょっと踏み込んで見ていきましょう。