Tomcat 6で実行されているWebアプリケーションがあり、組み込みのDBCP接続プールを使用するように構成できました。すべてが正常に機能していますが、データベースで間違った分離レベルで実行されていると思われます。コミットされていない読み取りで実行したいのですが、コミットされた読み取りで実行されていると思います。設定方法がわかりません。
これが私のコンテキストのXMLファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true">
<Resource
name="jdbc/Connection"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://...etc..."
/>
</Context>
そして、これはデータベース接続を取得するために使用されるJavaメソッドです。
public Connection getDatabaseConnection() throws ServletException {
try {
InitialContext cxt = new InitialContext();
if ( cxt == null ) {
throw new ServletException( "ServletContext unavailable." );
}
DataSource ds = (DataSource)cxt.lookup( "java:/comp/env/jdbc/Connection" );
if ( ds == null ) {
throw new ServletException( "Data source not found!" );
}
Connection conn = ds.getConnection();
return conn;
} etc...
で接続を取得するとgetDatabaseConnection()
、で分離レベルを手動で設定できることに気付きconn.setIsolationLevel( Connection.TRANSACTION_READ_UNCOMMITTED )
ましたが、Javaに分離レベルをハードコーディングするか、新しい接続が必要になるたびにサーブレットコンテキストのルックアップを実行する必要があるため、これは間違っていると感じます。
どういうわけかコンテキストXMLでこれを定義できますか、それとも私が知らないより良いアプローチがありますか?