У меня есть веб-приложение, использующее библиотеку с «CompilingClassLoader», и когда она перезагружается (поскольку кто-то редактировал код), каждый раз создается новый загрузчик классов. Когда это произойдет, следующий код в спящем плагин Я пишу выполняется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 OR в Thread.current.setContextClassLoader().
спасибо, Дин