поиск менеджера сущностей в классах EJB Helper - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь внедрить менеджер сущностей в некоторый вспомогательный класс, я могу передать его помощнику из сессионного компонента, но проблема в том, что мне нужно использовать диспетчер сущностей в статическом блоке инициализации вспомогательного класса (что-товроде):

class MySessionBeanHelperClass
{
 // staff here...


    static
 {
  SomeClass s = new SomeClass(entityManager);
 }
}

Итак, я думаю, что единственный способ - поиск менеджера сущностей вместо его внедрения.а также использование переданного SessionContent не будет работать здесь.(это ????) (это первый вопрос)

Второй вопрос: если я использовал обычный способ поиска ресурса (в данном случае менеджер сущностей) (что-то вроде следующего:)

Context ic = new InitialContext(); 
em = (EntityManager) ic.lookup("java:comp/env/persistence/em"); 

Будет ли это преобразовывать все транзакции, используемые этим менеджером сущностей, в транзакции, управляемые Бином ??

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 января 2011

Я не думаю, что это хорошая идея сделать это из статического инициализатора. Вы должны быть уверены, что все необходимые сервисы (такие как JNDI, JPA) работают до того, как происходит поиск, но вы не можете гарантировать это, когда делаете это из статического инициализатора.

В EJB известна проблема, заключающаяся в том, что не существует «стандартного» способа выполнения одноразовых задач в приложении. начать / остановить, но вы можете использовать трюк по следующей ссылке:

Как выполнить операцию очистки БД при завершении работы в контейнере EJB

Пример для выполнения действий над приложением. остановитесь, но вместо этого вы можете переопределить Servlet#init.

1 голос
/ 26 января 2011

Ответьте на свой второй вопрос, Нет .

Первый вопрос, это не очень хорошая идея.Кстати, что ты делаешь?Если вам нужен EntityManager в вашем вспомогательном классе, лучше сделать его частной переменной уровня экземпляра и передать ее из вашего сессионного компонента с помощью конструктора вспомогательного класса.

...