我在項目(Spring + Hibernate項目)中使用JPA與Hibernate實現和EJB 2.1。我部署到JBoss 6.0 CR1我的項目後,服務器日誌中說:使用EJB 2和JPA時未綁定的實體Bean
15:34:20,866 INFO [EjbDeployer] installing bean: ejb/ejbproject.jar#EBMyBean,uid27484928
15:34:20,867 INFO [EjbDeployer] with dependencies:
15:34:20,870 INFO [EjbDeployer] and supplies:
15:34:20,871 INFO [EjbDeployer] jndi:EBMyBean
15:34:20,873 INFO [EjbDeployer] jndi:local/[email protected]
15:34:21,038 INFO [PersistenceUnitDeployment] Starting persistence unit persistence.unit:unitName=myproject.ear/ejbproject.jar#persistenceUnit
15:34:21,196 INFO [Version] Hibernate Commons Annotations 3.2.0.Final
服務器未正常啓動,並在年底就拋出一個異常說:
Caused by: javax.naming.NameNotFoundException: EBMyBean not bound
在JBoss中的JMX控制檯我在Ejb 2.1模塊部分看不到任何東西。 我的EAR文件包含一個jar文件和一個war文件。所有ejbs和持久性單元都在jar文件中。
在我的jar文件的META-INF文件夾中有ejb-jar.xml和persistence.xml文件,但我沒有指定jboss.xml。我在該文件夾外有一個beanRefContext.xml以及一些bean定義文件。
ejb-jar.xml中是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<!--========================================-->
<!-- EBMyBean -->
<!--========================================-->
<entity>
<description></description>
<ejb-name>EBMyBean</ejb-name>
<local-home>com.ejb.EBMyBeanHome</local-home>
<local>com.ejb.EBMyBean</local>
<ejb-class>com.ejb.EBMyBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
</entity>
<enterprise-beans>
</ejb-jar>
我也做了一個簡單的EJB 2.1會話bean的測試項目沒有Hibernate和部署它。服務器日誌,但是,不同的是:
15:30:46,658 INFO [EjbDeployer] installing bean: ejb/#HiEJB,uid14009391
15:30:46,658 INFO [EjbDeployer] with dependencies:
15:30:46,659 INFO [EjbDeployer] and supplies:
15:30:46,660 INFO [EjbDeployer] jndi:HiEJB
15:30:46,660 INFO [EjbDeployer] jndi:HiEJB/com.test.HiRemote
15:30:46,697 INFO [EjbModule] Deploying HiEJB
15:30:46,904 INFO [ProxyFactory] Bound EJB Home 'HiEJB' to jndi 'HiEJB'
在JMX控制檯,我可以看到在EJB 2.1模塊部分的一些JNDI對象,並在服務器啓動確定。
看來我的第一個項目中的bean沒有綁定到jndi對象。但我該如何解決這個問題?
您的applicationContext.xml或jboss ejb部署描述符似乎有問題。你能顯示這些文件嗎? – 2010-12-21 12:01:17
您的EAR結構如何?你的EJB是否在JAR中,而你的EJB是否在另一個JAR中,或者它們是否在同一個jar中? – jpkrohling 2010-12-21 14:20:28