Развертыванию Weblogic Ear не удается внедрить диспетчер сущностей - PullRequest
0 голосов
/ 23 апреля 2011

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мой entityManager не может быть введен во время выполнения веб-приложения, развернутого в ухе.

Ухо настроено следующим образом:

/ META-INF -application.xml (EJBJar + WAR)
-MANIFEST.MF
-weblogic-application.xml (в настоящее время только тот, который по умолчанию генерирует eclipse)
/ APP-INF
-lib
-EJBClientJar (интерфейсы + pojos)

-other jars
 -classes   

EJBJar
/ META-INF
-persistence.xml
/ src
-Аннотированные классы
WAR
-Сервисные классы

Классы следующие:
DAO inside EJBJar

@Stateless(mappedName="AwesomeBean")
public class Awesome implements AwesomeRemote //AwesomeRemote in EJBClientJar
{     
   @PersistenceContext
   EntityManager em;   
}


public class AwesomeService   //Inside WAR
{  
    AwesomeRemote = context.lookup (Awesome.path.to.AwesomeRemote)  //Is found
}

Стек вызовов выглядит так:
War -> EJBClientJar-> EJBJar
На банке EJB менеджер сущностей является нулевым.Вопрос в том, как я могу гарантировать, что PersistenceContext будет введен?Поиск JNDI успешно выполняется на интерфейсе AwesomeRemote.В интерфейсе нет аннотаций.

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Вы должны прочитать об «упаковке» части спецификаций ejb.

Эта структура должна быть достаточной и работать:

/
    /lib
        EJBClientJar (interfaces + pojos)
    /META-INF
        persistence.xml
        application.xml
    EJBJar.jar
    WAR.war

Поскольку некоторое форматирование было потеряно, я не уверен насчетчто не так у вас.

Если это все еще не работает, попробуйте удалить единственную сложную часть сверху: поместите все классы из EJBClientJar в корень.У вас самая простая из возможных пакетов EAR, она просто будет работать.

Кроме того, если вы не используете свой сессионный компонент вне веб-приложения, вы можете использовать @Local вместо @Remote.

0 голосов
/ 27 апреля 2011

Вероятно, это связано с тем, что вы пытаетесь внедрить в класс POJO, а не в управляемый компонент. Не могли бы вы пометить его как @Stateless и public и проверить, работает ли он? Для простого тестирования вы также можете добавить аннотацию @WebService и вызвать ваш компонент, например, с помощью SoapUI.

...