Развертывание EJB 3 в JBoss AS 7 - PullRequest
       42

Развертывание EJB 3 в JBoss AS 7

1 голос
/ 12 января 2012

Я пытаюсь создать прототип простого 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? Спасибо!

1 Ответ

2 голосов
/ 13 января 2012

Я выяснил, что проблема с вышесказанным заключается в том, что я поместил файл persistence.xml в мою EJB-банку, а не в EAR META-INF

...