我有一個會話bean類,它有一些數據庫操作。我需要使用具有多個數據庫的類,因此我將ejb-jar.xml配置爲從該類創建會話bean,每個數據庫都使用每個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,它按預期工作。但我創建了兩個以上,它在部署時拋出異常:
Caused by: java.lang.IllegalArgumentException: JBAS011053: Incompatible conflicting binding at java:comp/env/userEntityManager/em source: [email protected]b07ef
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]
這裏發生了什麼事情。誰能幫忙?任何建議或意見都被佔用。
納瓦
嗨喬鮑,我......「持久性的unitName未指定,並有應用程序部署3所持久性單元定義‘ABC-App.war’要麼改變應用程序只有一個持久性單元定義或爲持久單元的每個引用指定unitName。「 :-( – NawaMan
我修改了我的答案 – Csaba
double enterprise-beans標籤是一個複製粘貼錯誤 – NawaMan