0

ConnectionContext (接続) を取得/キャッシュ/閉じるにはどうすればよいですか?

ItemWriter.open()でコンテキストをキャッシュし、各チャンクのItemWriter.writeItems()でキャッシュする必要があります

DB2 固有の API を使用したい場合はどうすればよいですか?

4

1 に答える 1

0

一般に、各チャンクで実行されるwriteItems()メソッドで SQLJ の get-use-close パターンを使用することをお勧めします。これは、 open()で接続/コンテキストを取得し、チャンク全体でキャッシュするよりも優先されます。

Connection.unwrap()メソッドを使用して、JDBC ドライバー固有の呼び出しを行うことができます。

次のようなものです:

public class MyDB2SQLJItemWriter implements ItemWriter {

    DataSource myDataSource; // get via injection (not shown) or however

    // ...

    public void writeItems(List<Object items) throws Exception {

        Connection con = myDataSource.getConnection();
        DB2Connection db2Con = con.unwrap(DB2Connection.class);
        db2Con.setPackagePath(currentPackagePath);  // DB2-specific call
        SqljCtx sqljCtx = new SqljCtx(db2Con);

        // now do SQLJ

        // close SqljCtx AND DB2Connection
        sqljCtx.close();
    }

また、enableConnectionCasting属性を使用して dataSource を構成する必要もありません (これにより、ここでは不要な柔軟性が追加され、接続キャッシュに関連するより複雑な問題への扉が開かれます)。

この推奨事項は、JDBC API を使用する場合に WebSphere で get-use-close パターンに従うように一般的な推奨事項を拡張したものです。WebSphere に接続プーリングを任せると、パフォーマンスが向上し、リソースの使用率が向上し、より複雑なプーリング シナリオが回避されます。

于 2017-11-10T15:23:02.953 に答える