Я пытаюсь создать прототип простого EAR с EJB 3 / Hibernate 4, развернутым на JBoss AS 7.
У меня очень простые / тупые классы:
Интерфейс EJB:
@Local
public interface PrototypeObjectEJB {
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
void persist(PrototypeObject o);
}
EJB Bean:
@Stateless
public class PrototypeObjectEJBBean implements PrototypeObjectEJB
{
private Logger logger = Logger.getLogger(PrototypeObjectEJBBean.class);
@PersistenceContext
EntityManager em;
public void persist(PrototypeObject o) {
logger.debug("[persist] start");
em.persist(o);
logger.debug("[persist] ends");
}
}
Моя структура EAR:
EAR
+ lib
+ META-INF
|- application.xml
|- jboss-app.xml
|- MANIFEST.MF
+ EJB.jar
|- com (java classess / packages)
|- META-INF
| |- MANIFEST.MF
|- log4j.properties
|- persistence.xml
+ Web.war
Я развертываю на JBoss-as-7.1.0-CR1b и получаю:
10:40:42,010 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeplo
ymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean name
d PrototypeObjectEJBBean in deployment unit subdeployment "JBossPrototype-EJB-1.
0.jar" of deployment "JBossPrototype-EAR-1.0.ear" are as follows:
java:global/JBossPrototype-EAR-1.0/JBossPrototype-EJB-1.0/PrototypeObjec
tEJBBean!com.mythum.billing.ejb.PrototypeObjectEJB
java:app/JBossPrototype-EJB-1.0/PrototypeObjectEJBBean!com.mythum.billin
g.ejb.PrototypeObjectEJB
java:module/PrototypeObjectEJBBean!com.mythum.billing.ejb.PrototypeObjec
tEJB
java:global/JBossPrototype-EAR-1.0/JBossPrototype-EJB-1.0/PrototypeObjec
tEJBBean
java:app/JBossPrototype-EJB-1.0/PrototypeObjectEJBBean
java:module/PrototypeObjectEJBBean
10:40:42,149 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC0000
1: Failed to start service jboss.deployment.subunit."JBossPrototype-EAR-1.0.ear"
."JBossPrototype-EJB-1.0.jar".INSTALL: org.jboss.msc.service.StartException in s
ervice jboss.deployment.subunit."JBossPrototype-EAR-1.0.ear"."JBossPrototype-EJB
-1.0.jar".INSTALL: Failed to process phase INSTALL of subdeployment "JBossProtot
ype-EJB-1.0.jar" of deployment "JBossPrototype-EAR-1.0.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(Deplo
ymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(Se
rviceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceCont
rollerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886) [:1.6.0_24]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:908) [:1.6.0_24]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_24]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBA
S011047: Component class com.mythum.billing.ejb.PrototypeObjectEJBBean for compo
nent PrototypeObjectEJBBean has errors:
JBAS011440: Can't find a deployment unit named null in subdeployment "JBossProto
type-EJB-1.0.jar" of deployment "JBossPrototype-EAR-1.0.ear"
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.hand
le(ModuleJndiBindingProcessor.java:155)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescript
ionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.proces
sClassConfigurations(ModuleJndiBindingProcessor.java:148)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy
(ModuleJndiBindingProcessor.java:141)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(Deplo
ymentUnitPhaseService.java:115) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
... 5 more
Чего мне не хватает, чтобы правильно настроить EJB?
Спасибо!