Sun Java System Web Server 7.0 で JDBC 接続プールを構成するには、jdbc-resource 要素を使用します。次の手順に従えば、もっとも簡単な接続プールを構成できます。この例の接続プールは Oracle JDBC ドライバを使用します。
wadm を起動します。
JDBC リソースを作成します。
基本的な構成の JDBC リソースを作成します。ほかの属性も利用可能であり、それらを使えば接続プールを細かく調整できます。ほかの属性や使用例については、マニュアルページを参照してください。
wadm> create-jdbc-resource --config=test --datasourceclass=oracle.jdbc.pool.OracleDataSource jdbc/MyPool |
ベンダー固有のプロパティーを構成します。
ドライバのベンダー固有のプロパティーを構成するには、プロパティーを使用します。次の例では、プロパティー url、user、および password が、JDBC リソースに追加されています。
wadm> add-jdbc-resource-userprop --config=test --jndi-name=jdbc/MyPool url=jdbc:oracle:thin:@hostname:1521:MYSID user=myuser password=mypassword |
接続検証を有効にします。
プールでは接続検証を有効にすることができます。このオプションを使用すると、接続がアプリケーションに渡される前に、その接続が検証されます。これにより、ネットワークやデータベースサーバーに障害が発生してデータベースが利用できなくなった場合でも、Web サーバーが自動的にデータベース接続を再確立できます。接続の検証は追加オーバーヘッドとなるため、パフォーマンスに若干の影響が生じます。
wadm> set-jdbc-resource-prop --config=test --jndi-name=jdbc/MyPool connection-validation-table-name=test connection-validation=table |
デフォルトのプール設定を変更します。
この例では、最大接続数を変更しています。
wadm> set-jdbc-resource-prop --config=test --jndi-name=jdbc/MyPool max-connections=100 |
構成を配備します。
wadm> deploy-config test |
JDBC ドライバを含む JAR ファイルを提供します。
ドライバを実装するクラスをサーバーに知らせる必要があります。これを実行する方法には次の 2 つがあります。
ドライバの JAR ファイルをサーバーインスタンスの lib ディレクトリ内にコピーします。これがもっとも簡単な方法です。なぜなら、インスタンスの lib ディレクトリに含まれる JAR ファイルは自動的にサーバーに読み込まれ、サーバーから利用可能になるからです。
JVM の class-path-suffix を変更して、JDBC ドライバの JAR ファイルが含まれるようにします。
wadm> set-jvm-prop --config=test class-path-suffix=/export/home/lib/classes12.jar |
Web アプリケーションでの使用方法。
WEB-INF/web.xml の変更。
<web-app> ... <resource-ref> <description>JDBC Connection Pool</description> <res-ref-name>jdbc/myJdbc</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ... </web-app> |
WEB-INF/sun-web.xml の変更。
<sun-web-app> ... <resource-ref> <res-ref-name>jdbc/myJdbc</res-ref-name> <jndi-name>jdbc/MyPool</jndi-name> </resource-ref> ... </sun-web-app> |
接続プールの使用。
Context initContext = new InitialContext(); Context webContext = (Context)context.lookup("java:/comp/env"); DataSource ds = (DataSource) webContext.lookup("jdbc/myJdbc"); Connection dbCon = ds.getConnection(); |