2

スタンドアロンの c3pO または DBCP 接続プールをトップリンク ベースの JPA プロジェクトに追加する方法を教えてください。

persistence.xml ファイルがあり、データベースにクエリを実行するたびに、次のようにしています。

EntityManagerFactory emf = this.getEntityManagerFactory();

// 必ず persistence.xml を使用してファクトリをセットアップします

EntityManager em = emf.createEntityManager(); ...

外部接続プール マネージャと Toplink の間のブリッジはどこに構築すればよいですか? アイデアやリンクは大歓迎です。

よろしく、ジャン

4

2 に答える 2

0

何をすべきか本当にわかりません。初心者向けの非常にぼやけたページ。それにもかかわらず、私は SessionCustomizer クラスを別に作成しました。c3p0 を使用した、customize() メソッドは次のとおりです。

public void customize(Session session) throws Exception{ 
DataSource ds = DataSources.unpooledDataSource("myServerURL", "login", "pwd"); 
DataSource pooled = DataSources.pooledDataSource(ds); 
JNDIConnector conn = (JNDIConnector)session.getLogin().getConnector(); 
conn.setDataSource(pooled); 
conn.setLookupType(JNDIConnector.STRING_LOOKUP); 
}

正しいとも思えません。接続情報をコードで明確にしていますが、本当に奇妙です。

第二に、リンクからのpersistence.xmlの例では、次のように記述しています:

<non-jta-data-source>java:comp/env/jdbc/DefaultDS</non-jta-data-source>
   <class>sample.MyEntity</class>
   <properties>
     <property name="toplink.session.customizer" value="es.claro.commons.ds.DataSourceSessionCustomizer"/>
   </properties>

特に「non-jta-data-source」タグの場合、何を入れるべきですか? コードではなくそのxmlに接続情報を入れる方法はありますか?

ヘルプ。

于 2010-04-14T10:32:53.297 に答える
0

私は Toplink を使用していないため、これをテストしませんでしたが、ネット上で見つかったさまざまなリソースについての私の理解では、 の実装を提供する必要があるということですSessionCustomizer。この実装では、JNDIConnectorクラスを使用してメソッドを使用してオブジェクトを提供DataSourceます ( c3p0は DataSource API を実装します) setDataSource(javax.sql.DataSource)

Toplink Essentials の非 JTA DataSourceの操作のサンプルを適応させます。

于 2010-04-13T22:06:57.597 に答える