[jboss-user] [EJB 3.0] - Dependency bug with multiple modules in EAR
dahm
do-not-reply at jboss.com
Thu Mar 27 13:54:20 EDT 2008
Hi,
I found a very strange bug in JBoss 4.2.2.GA (and a workaround, thank goodness!) when using an EAR with multiple
modules/JARS in application.xml: We have several (Maven) projects each of which contains session beans and one
project with the data model entities (EJB3). They each produce a JAR that goes into the EAR as a module.
Now I added a new project that contained a simple MDB like this:
@MessageDriven(activationConfig = {
| @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
| @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/testQueue") })
| public class RequestReceiverMDB implements MessageListener {
| ...
| }
|
To my amazement the following exception occurred upon deployment:
18:15:14,488 INFO [EARDeployer] Init J2EE application: file:/C:/server/Cellactive-Server/server/default/deploy/mps-serverapplication-1.4-SNAPSHOT.ear/
| 18:15:15,004 WARN [MainDeployer] Found non-jar deployer for mps-datamodel-1.4-SNAPSHOT.jar: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
| 18:15:15,035 WARN [MainDeployer] Found non-jar deployer for mps-datamodel-1.4-SNAPSHOT.jar: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
| 18:15:15,082 WARN [MainDeployer] Found non-jar deployer for mps-operation-1.4-SNAPSHOT.jar: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
| 18:15:16,082 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,082 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=jboss-seam-2.0.1.GA.jar,name=TimerServiceDispatcher,service=EJB3 with dependencies:
| 18:15:16,175 INFO [EJBContainer] STARTED EJB: org.jboss.seam.async.TimerServiceDispatcher ejbName: TimerServiceDispatcher
| 18:15:16,207 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateful.StatefulContainer
| 18:15:16,207 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=jboss-seam-2.0.1.GA.jar,name=EjbSynchronizations,service=EJB3 with dependencies:
| 18:15:16,222 INFO [EJBContainer] STARTED EJB: org.jboss.seam.transaction.EjbSynchronizations ejbName: EjbSynchronizations
| 18:15:16,254 INFO [EJB3Deployer] Deployed: file:/C:/server/Cellactive-Server/server/default/deploy/mps-serverapplication-1.4-SNAPSHOT.ear/jboss-seam-2.0.1.GA.jar
| 18:15:16,254 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.mdb.MDB
| 18:15:16,254 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-acquireradapter-1.4-SNAPSHOT.jar,name=PaymentRequestReceiverMDB,service=EJB3 with dependencies:
| 18:15:16,254 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.acquirer.adapter.request.PaymentRequestReceiverMDB ejbName: PaymentRequestReceiverMDB
| 18:15:16,269 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,269 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-acquireradapter-1.4-SNAPSHOT.jar,name=DummyAcquirer,service=EJB3 with dependencies:
| 18:15:16,285 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.acquirer.dummy.DummyAcquirer ejbName: DummyAcquirer
| 18:15:16,285 INFO [EJB3Deployer] Deployed: file:/C:/server/Cellactive-Server/server/default/deploy/mps-serverapplication-1.4-SNAPSHOT.ear/mps-acquireradapter-1.4-SNAPSHOT.jar
| 18:15:16,332 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,332 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=AdministratorServiceBean,service=EJB3 with dependencies:
| 18:15:16,332 INFO [JmxKernelAbstraction] jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3
| 18:15:16,332 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,332 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=ClerkServiceBean,service=EJB3 with dependencies:
| 18:15:16,332 INFO [JmxKernelAbstraction] jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3
| 18:15:16,332 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,332 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3 with dependencies:
| 18:15:16,347 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.dao.EventLoggerServiceBean ejbName: EventLoggerServiceBean
| 18:15:16,363 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.admin.dao.AdministratorServiceBean ejbName: AdministratorServiceBean
| 18:15:16,394 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.clerk.dao.ClerkServiceBean ejbName: ClerkServiceBean
| 18:15:16,425 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,425 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=AccountInformationServiceBean,service=EJB3 with dependencies:
| 18:15:16,425 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.paymentparty.dao.AccountInformationServiceBean ejbName: AccountInformationServiceBean
| 18:15:16,441 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,441 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=PaymentAccountServiceBean,service=EJB3 with dependencies:
| 18:15:16,441 INFO [JmxKernelAbstraction] jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3
| 18:15:16,457 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.paymentparty.dao.PaymentAccountServiceBean ejbName: PaymentAccountServiceBean
| 18:15:16,472 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,472 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=PaymentPartyServiceBean,service=EJB3 with dependencies:
| 18:15:16,472 INFO [JmxKernelAbstraction] jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3
| 18:15:16,488 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.paymentparty.dao.PaymentPartyServiceBean ejbName: PaymentPartyServiceBean
| 18:15:16,488 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,488 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=SpendingLimitServiceBean,service=EJB3 with dependencies:
| 18:15:16,504 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.paymentparty.dao.SpendingLimitServiceBean ejbName: SpendingLimitServiceBean
| 18:15:16,519 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,519 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=TerminalDeviceServiceBean,service=EJB3 with dependencies:
| 18:15:16,519 INFO [JmxKernelAbstraction] jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=EventLoggerServiceBean,service=EJB3
| 18:15:16,535 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.paymentparty.dao.TerminalDeviceServiceBean ejbName: TerminalDeviceServiceBean
| 18:15:16,535 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
| 18:15:16,535 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-dataaccess-1.4-SNAPSHOT.jar,name=UserMaintenanceServiceBean,service=EJB3 with dependencies:
| 18:15:16,535 INFO [EJBContainer] STARTED EJB: com.cellactive.mp.server.user.dao.UserMaintenanceServiceBean ejbName: UserMaintenanceServiceBean
| 18:15:16,550 INFO [EJB3Deployer] Deployed: file:/C:/server/Cellactive-Server/server/default/deploy/mps-serverapplication-1.4-SNAPSHOT.ear/mps-dataaccess-1.4-SNAPSHOT.jar
| 18:15:16,550 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.entity.PersistenceUnitDeployment
| 18:15:16,550 INFO [JmxKernelAbstraction] installing MBean: persistence.units:ear=mps-serverapplication-1.4-SNAPSHOT.ear,unitName=MpsDataModel with dependencies:
| 18:15:16,550 INFO [JmxKernelAbstraction] jboss.jca:name=MPS-DS,service=DataSourceBinding
| 18:15:16,550 INFO [PersistenceUnitDeployment] Starting persistence unit persistence.units:ear=mps-serverapplication-1.4-SNAPSHOT.ear,unitName=MpsDataModel
| 18:15:16,550 WARN [ServiceController] Problem starting service persistence.units:ear=mps-serverapplication-1.4-SNAPSHOT.ear,unitName=MpsDataModel
| javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
| at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
| at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
| at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
| at javax.naming.InitialContext.lookup(InitialContext.java:351)
| at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:216)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.ejb3.ServiceDelegateWrapper.startService(ServiceDelegateWrapper.java:103)
| at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
| at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
| at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
| at $Proxy0.start(Unknown Source)
| at org.jboss.system.ServiceController.start(ServiceController.java:417)
| at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy235.start(Unknown Source)
| at org.jboss.ejb3.JmxKernelAbstraction.install(JmxKernelAbstraction.java:120)
| at org.jboss.ejb3.Ejb3Deployment.startPersistenceUnits(Ejb3Deployment.java:627)
| at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:351)
| at org.jboss.ejb3.Ejb3Module.startService(Ejb3Module.java:91)
| at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
| at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
| at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
| at $Proxy0.start(Unknown Source)
| at org.jboss.system.ServiceController.start(ServiceController.java:417)
| at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy33.start(Unknown Source)
| at org.jboss.ejb3.EJB3Deployer.start(EJB3Deployer.java:512)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
| at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
| at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
| at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)
| at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
| at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy34.start(Unknown Source)
| at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
| at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
| at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
| at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
| at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy9.deploy(Unknown Source)
| at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
| at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
| at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
| at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
| at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
| 18:15:16,550 INFO [EJB3Deployer] Deployed: file:/C:/server/Cellactive-Server/server/default/deploy/mps-serverapplication-1.4-SNAPSHOT.ear/mps-datamodel-1.4-SNAPSHOT.jar
| 18:15:16,597 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.service.ServiceContainer
| 18:15:16,597 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=mps-serverapplication-1.4-SNAPSHOT.ear,jar=mps-management-1.4-SNAPSHOT.jar,name=AdministratorManagementBean,service=EJB3 with dependencies:
After quite some time I found that it worked, when I manually renamed the JARs so that the one with the MDB was last
(JBoss scans the JARs in alphabetical order, I don't know if that's OK). It also worked if everything was merged into one
single JAR.
Further investigations showed that the project with the datamodel (and the persistence.xml) must come before the one with the MDB.
Altough the latter has no dependencies to the datamodel!
The workaround I found was the following, I added an @Dependency anotation to the MDB:
| ...
| @Depends("jboss.j2ee:module=mps-datamodel-1.4-SNAPSHOT.jar,service=EJB3")
|
Now it works again. However, I consider this a serious and confusing Bug in JBoss. Unless you prove it has to be
this way :-)
Cheers
Markus
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4139423#4139423
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4139423
More information about the jboss-user
mailing list