У меня есть настройка среды разработки с помощью профиля WebSphere Liberty 8.5.5.6.WebSphere Liberty Профиль DataSource и CDI
Я настроил DataSource в моем server.xml
<dataSource jndiName="jdbc/DB" transactional="true" type="javax.sql.XADataSource">
<jdbcDriver libraryRef="dblib" />
<connectionManager maxPoolSize="10" minPoolSize="2" />
<properties.oracle URL="MYURL" user="usr" password="pw" />
</dataSource>
В моем проекте я впрыснуть мои EntityManagers с помощью CDI. Все работает очень хорошо. Но моя проблема в том, что я не могу внедрить новый EntityManager после того, как я это сделал один раз.
У меня есть класс EntityManagerProducer, который генерирует мои EntityManager. Метод
class EntityManagerProducer {
@PersistenceUnit(name = "DB")
private EntityManagerFactory entityManagerFactory;
@Produces
public EntityManager create() {
EntityManager tmp = this.entityManagerFactory.createEntityManager();
LoggerFactory.info(Constants.AppName, "EntityManager " + tmp.toString() + " freigegeben.");
return this.entityManagerFactory.createEntityManager();
}
public void dispose(@Disposes @Default EntityManager entityManager) {
if (entityManager.isOpen()) {
entityManager.close();
LoggerFactory.info(Constants.AppName, "EntityManager " + entityManager.toString() + " beseitigt.");
}
}
}
Dispose() никогда не вызывается, так что я думаю, что EntityManager никогда не закрывается, и поэтому я не буду получать новый ??
Помощь будет замечательной ...
Является ли ваш класс EntityManagerProducer объявленным как bean-компонент? Спецификация @Disposes заявляет, что метод dispose должен быть объявлен в управляемом или сеансовом классе. –
Я добавил аннотацию @ManagedBean, но это не решило проблему - снова первый вызов работает, при втором вызове я получаю исключение NullPointerException ... – downdrown