永続性.xmlの永続性ユニットは、アプリケーションのビルド中に作成されます。実行時にデータベースのURLを変更したいので、実行時に永続性ユニットを変更する方法はありますか?配布後、事前にバインドされたデータベース以外の別のデータベースを使用することになりました。
EclipseLink(JPA 2.1)を使用しています
永続性ユニットファイル(Persistence.xml)をそのまま保持します。次のように、その中のプロパティをオーバーライドできます。
EntityManagerFactory managerFactory = null;
Map<String, String> persistenceMap = new HashMap<String, String>();
persistenceMap.put("javax.persistence.jdbc.url", "<url>");
persistenceMap.put("javax.persistence.jdbc.user", "<username>");
persistenceMap.put("javax.persistence.jdbc.password", "<password>");
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>");
managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap);
manager = managerFactory.createEntityManager();
Persistence.createEntityManagerFactory(Map)を使用してプロパティを渡し、データベースのURLやその他の設定を選択できます。
長期間有効なセッションアーキテクチャでは、プラグインフレームワークを作成する必要があります。
したがって、別のThread-GroupとClass-Repositoryを作成する必要があります。
これはあなたのクラスローダーツリーかもしれません
persistence.xml
でロードし、Application-Class-LoaderからDatabase-Configurationを指定します