0

У меня есть настройка среды разработки с помощью профиля 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 никогда не закрывается, и поэтому я не буду получать новый ??

Помощь будет замечательной ...

+0

Является ли ваш класс EntityManagerProducer объявленным как bean-компонент? Спецификация @Disposes заявляет, что метод dispose должен быть объявлен в управляемом или сеансовом классе. –

+0

Я добавил аннотацию @ManagedBean, но это не решило проблему - снова первый вызов работает, при втором вызове я получаю исключение NullPointerException ... – downdrown

ответ

0

@aguibert был прав!

Добавление @RequestScoped к классу и к методу create() сделали это!

Спасибо!

Смежные вопросы