いくつかのデータベース操作を持つセッションBeanクラスがあります。複数のデータベースでクラスを使用する必要があるため、ejb-jar.xmlを構成して、このクラスから各データベースの各BeanのセッションBeanを作成します。これがコードです。
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>
...
セッションBeanを1つだけ作成すると、期待どおりに機能します。しかし、2つ以上作成すると、次のようにデプロイ時に例外がスローされます。
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]
ここで何が起こっているのか。誰か助けてもらえますか?提案やコメントはすべて流用されます。
なわ