1

私のアプリケーションでは、Toplink with JPa を使用しています。ここでの問題は、このアプリケーションでストアド プロシージャを使用していること、ストアド プロシージャの呼び出しに Jndi 接続を使用して接続を取得していること、残りのクエリに EntityManger を使用していることです。しかし、ここでアプリケーションを起動すると、接続プールから 2 つの接続が取得されます。アプリケーションの起動後、ストアド プロシージャ (sp) 1 つの sp を呼び出しています。1 つの接続を使用していますが、websphere 接続プールでは 2 つの接続を作成していますか? この問題を克服する方法を教えてください.....

使用している JDBC 接続を取得するために、JTA を使用しません。

EntityManager em = getJpaTemplate().getEntityManagerFactory().createEntityManager();

このようにして、JDBC接続を取得しています...そして、コードに従ってpersitence.xmlファイルを構成しました...

<properties>
    <property name="toplink.logging.level" value="OFF"/>
    <property name="toplink.cache.type.default" value="NONE"/>
    <property name="com.thoughtinc.runtime.persistence.sql.syntax" value="db2" />
</properties>

ですから、親切にこれを調べて、ここで何か間違ったことをしている場合は教えてください.

4

1 に答える 1

0

JTA を使用していますか、それとも非 JTA を使用していますか? 使用後に接続を解放してプールに戻していますか?

構成(persistence.xmlを含める)に応じて、非JTAログインが構成されている場合、TopLinkはこれを非トランザクション読取り問合せに使用する場合があります。これは、persistence.xml で構成できます。

TopLink (EclipseLink) EntityManager から JDBC 接続を取得するには、em.unwrap(Connection.class) を使用します。

于 2012-09-04T13:40:12.003 に答える