У меня есть класс сеансового компонента, который выполняет некоторые операции с базой данных. Мне нужно использовать класс с несколькими базами данных, поэтому я конфигурирую ejb-jar.xml для создания сеансовых компонентов из этого класса, каждый компонент для каждой базы данных. Вот код.
public class UserEM
{
/** The entity manager */
@Resource(name="userEntityManager/em")
private EntityManager em;
public EntityManager getEntityManager()
{
return this.em;
}
... Database operations using the `em` ...
}
А вот ejb-jar.xml
...
<enterprise-beans>
<session>
<ejb-name>UserEM1</ejb-name>
<ejb-class>com.abc.app.dao.UserEM</ejb-class>
<session-type>Stateless</session-type>
<persistence-context-ref>
<persistence-context-ref-name>userEntityManager/em</persistence-context-ref-name>
<persistence-unit-name>DataSource1</persistence-unit-name>
</persistence-context-ref>
</session>
<session>
<ejb-name>UserEM2</ejb-name>
<ejb-class>com.abc.app.dao.UserEM</ejb-class>
<session-type>Stateless</session-type>
<persistence-context-ref>
<persistence-context-ref-name>userEntityManager/em</persistence-context-ref-name>
<persistence-unit-name>DataSource1</persistence-unit-name>
</persistence-context-ref>
</session>
</enterprise-beans>
</ejb-jar>
...
Когда я создаю только один сеансовый компонент, он работает, как и ожидалось. НО я создаю более двух, он выдает исключение при развертывании как:
Caused by: java.lang.IllegalArgumentException: JBAS011053: Incompatible conflicting binding at java:comp/env/userEntityManager/em source: org.jboss.as.jpa.injectors.PersistenceContextInjectionSource@937b07ef
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:237)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:136)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
Что здесь происходит. Кто-нибудь может помочь? Любые предложения или замечания принимаются.
Нава