У меня есть EJB, который аннотированный следующим образом:EntityManager из контейнера в SpringBeanAutowiringInterceptor созданного контекста
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
SpringBeanAutowiringInterceptor
создает ClassPathXmlApplicationContext
, который, в свою очередь, создает некоторые @Component
с. Один из этих @Component
s - это DAO, и поэтому ему нравится вводить EntityManager
. Предпочтительно, это должно быть управляемое контейнером EJB EntityManager
(согласно моей текущей информации).
Если добавить к EJB следующие компоненты, что работает просто отлично:
@PersistenceContext
EntityManager entityManager;
Если я однако сделать последний на моем DAO (что весной, которая является его собственный контекст), который не работает. Независимо от того, вызываю ли я название устройства конкретно или нет (unitName="test"
, «No bean named 'test' is defined
» против «No unique bean of type [javax.persistence.EntityManagerFactory]
»).
Я пробовал jee:jndi-lookup
весной, но я не понимаю, как сделать диспетчер сущности доступным в JNDI для этого. Должно ли это быть сделано каким-то образом в моем persistence.xml
или даже на другом уровне?
Я использую все это в JBOSS как тест Arquillian, но моя целевая среда WAS. Поэтому я должен уклоняться от решений, специфичных для контейнеров. Это не проект WAR, а сжатие EJB JAR в EAR.
Я думаю, что я ищу общую концепцию или лучшую практику здесь, чтобы продвинуть меня вперед. (Поэтому я ограничил количество кода, включенного в вопрос, хотя я рад поделиться некоторыми особенностями, если это поможет.) Спасибо!
Взгляните на это: http://stackoverflow.com/a/4717196/1850609 – acdcjunior
Большой вопрос. – Ceki