Я использую JPA с реализацией Hibernate и EJB 2.1 в моем проекте (проект Spring + Hibernate). После того, как я развернул свой проект на JBoss 6.0 CR1, журнал сервера сказал:
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/EBMyBean@31242541
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
В консоли JMX JBoss я ничего не вижу в разделе Ejb 2.1 Module.
Мой EAR-файл содержит файл jar и файл war. Все ejbs и единицы сохраняемости находятся в файле jar.
В папке META-INF моего jar-файла находятся файлы 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 без 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 я вижу некоторые объекты jndi в разделе модуля Ejb 2.1, и сервер запускается в порядке.
Кажется, компоненты в моем первом проекте не привязаны к объектам jndi. Но как я могу это исправить?