2012-01-12 144 views
1

我试图用原型EJB简单的EAR 3/4的Hibernate部署在JBoss AS 7EJB 3部署在JBoss AS中7

我有很简单/哑类:

EJB接口:

@Local 
public interface PrototypeObjectEJB { 
    @TransactionAttribute(value = TransactionAttributeType.REQUIRED) 
    void persist(PrototypeObject o); 
} 

EJB豆:

@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 
+ 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? 谢谢!

回答

2

我想通过上面的问题是,我把persistence.xml放在我的EJB jar中,而不是EAR的META-INF