1
私は、 'CompilingClassLoader'を持つライブラリを使用しているWebアプリケーションを持っていて、いつ誰かがコードを編集したためにリロードすると、毎回新しいクラスローダーが作成されます。それが起こるとき、私は書いてい休止プラグインで、次のコードはhibernate 5とJPAとエンティティクラスローダーを動的に設定する
@Singleton
@Provides
public EntityManagerFactory providesSessionFactory() throws IOException {
log.info("Loading Hibernate. ENTITY classloader="+entityClassLoader+" hibernate classloader="+this.getClass().getClassLoader());
Map<String, Object> properties = new HashMap<>();
properties.put("hibernate.classLoader.application", entityClassLoader);
EntityManagerFactory factory = Persistence.createEntityManagerFactory(persistenceUnit, properties);
log.info("Done loading Hibernate");
return factory;
}
を実行している私は「hibernate.classLoader.applicationは」代わりの目的に反している(persistence.xmlで定義されなければならないと思うので、問題が発生しますこれは開発者がコードを変更するたびに発生します)。
基本的に、私たちはCompilingClassLoaderが変化し続ける開発モードを持っています(それは本当に速いのですばらしいですが)。しかし、私は今、これを休止状態でどうやって行うのか分かりません。何らかのThreadLocalまたはThread.current.setContextClassLoader()に何らかの方法で設定する方法がありますか?
おかげで、 ディーン