永続性のために同じJVMに組み込みDerbyを使用するRCPクライアント・アプリケーションがあります。 JPAを介してRESOURCE_LOCALとEclipse LinkをJPAプロバイダとして使用してアクセスします。 JPAとpersistence.xmlにDerbyインスタンスを開始します。 persistence.xmlのJPA not DriverManagerを使用したシャットダウン・ダービー・データベース
<properties>
<property name="eclipse.weaving" value="false" />
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:pathToDb" />
<property name="eclipselink.logging.level.sql" value="FINEST" />
<property name="eclipselink.logging.parameters" value="true" />
</properties>
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, props);
は、アプリケーション内の1つの時点で、私は、根本的なDerbyデータベースを停止する必要があります。これは特に、複数のクラスローダを持つRCPアプリケーションでは、問題がある
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
DriverManager.getConnection("jdbc:derby:pathToDb;shutdown=true");
(それはカバーの下にOSGIを使用しています):例はすべて、呼び出しを示しています。私は
if (factory.isOpen())
factory.close();
を使用して試してみましたが、これは、シャットダウンダービーインスタンス、それにのみJPA接続をしません。
JPAを使用して、基礎となるDerbyインスタンスをシャットダウンする方法はありますか?
更新
私はのjavax.persistence、JPAとのダービーを含む持続性関連のバンドルを停止するOSGiコンソールを使用してみました。これらを停止しても、Derbyがログ・ファイルに記録したファイル・ロックは解放されませんでした。
アップデート2
は使用がOSGIサーバ・アプリケーションではないことを明確にするために改訂します。
derby-userメーリングリストに関するご意見は、http://apache-database.10148.n7.nabble.com/Shutdown-Derby-database-using-JPA-not-DriverManager-tp147171p147172です。 html –
提案:Derbyバンドルによってエクスポートされたすべてのサービスをリストします。おそらく、ドライバまたはデータベースのラッパーを公開するサービスがあります –