3

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でこれを定義できますか、それとも私が知らないより良いアプローチがありますか?

4

2 に答える 2