Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-5272

EAR containing a MDB(listening to a topic) fails to deploy because of the order of deployment

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • JBossAS-5.0.0.Beta4
    • Deployers
    • None

    Description

      A simple EAR containing an MDB which listens on a topic fails to deploy. The MDB is as follows:

      package org.myapp.ejb.impl;

      import javax.ejb.ActivationConfigProperty;
      import javax.ejb.MessageDriven;
      import javax.jms.Message;
      import javax.jms.MessageListener;

      import org.apache.log4j.Logger;

      @MessageDriven(activationConfig =
      {
      @ActivationConfigProperty(propertyName="destinationType",
      propertyValue="javax.jms.Topic"),
      @ActivationConfigProperty(propertyName="destination",
      propertyValue="topic/testTopic")
      })
      public class MyMDB implements MessageListener {

      private static Logger logger = Logger.getLogger(MyMDB.class);

      /**

      • Default constructor
        *
        */
        public MyMDB() {

      }

      /**

      • */
        public void onMessage(Message arg0)

        { System.out.println("onMessage of MyMDB called"); logger.info("onMessage of MyMDB called"); }

      }

      The sample EAR that i used for testing was named EJB3Persistence.ear and was placed in the deploy folder of JBoss. The topic was configured in destinations-service.xml which is inside deploy\messaging folder. Started JBoss. While deploying the application, JBoss threw this exception:

      2008-03-04 11:29:51,416 INFO [org.jboss.ejb3.EJBContainer] STARTED EJB: org.myapp.ejb.impl.MyMDB ejbName: MyMDB
      2008-03-04 11:29:51,416 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] Initializing
      2008-03-04 11:29:51,463 DEBUG [org.jboss.ejb.txtimer.EJBTimerServiceImpl] createTimerService: org.jboss.ejb.txtimer.TimerServiceImpl@1099c38
      2008-03-04 11:29:51,510 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Start: name=jboss.j2ee:ear=EJB3Persistence.ear,jar=myapp_ejb3.jar,name=MyMDB,service=EJB3 state=Create
      org.jboss.deployment.DeploymentException: Unable to create activation spec ra=jboss.jca:service=RARDeployment,name='jms-ra.rar' messaging-type=javax.jms.MessageListener properties={destination=org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData@aac6440e

      {destination}

      , destinationType=org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData@96f19068{destinationType}}
      at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:52)
      at org.jboss.ejb3.mdb.inflow.JBossMessageEndpointFactory.createActivationSpec(JBossMessageEndpointFactory.java:299)
      at org.jboss.ejb3.mdb.inflow.JBossMessageEndpointFactory.start(JBossMessageEndpointFactory.java:192)
      at org.jboss.ejb3.mdb.MessagingContainer.startProxies(MessagingContainer.java:187)
      at org.jboss.ejb3.mdb.MessagingContainer.start(MessagingContainer.java:151)
      at org.jboss.ejb3.mdb.MDB.start(MDB.java:123)
      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.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:56)
      at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:110)
      at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
      at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:214)
      at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:45)
      at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:108)
      at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:69)
      at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
      at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:135)
      at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:46)
      at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
      at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
      at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
      at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
      at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
      at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411)
      at org.jboss.system.ServiceController.doChange(ServiceController.java:659)
      at org.jboss.system.ServiceController.start(ServiceController.java:431)
      at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:150)
      at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:108)
      at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
      at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:65)
      at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
      at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:169)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:853)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:874)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:794)
      at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
      at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
      at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:498)
      at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:506)
      at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:246)
      at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:131)
      at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:408)
      at org.jboss.Main.boot(Main.java:208)
      at org.jboss.Main$1.run(Main.java:534)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.management.InstanceNotFoundException: jboss.jca:service=RARDeployment,name='jms-ra.rar' is not registered.
      at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:529)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:662)
      at org.jboss.ejb3.JmxClientKernelAbstraction.invoke(JmxClientKernelAbstraction.java:44)
      at org.jboss.ejb3.mdb.inflow.JBossMessageEndpointFactory.createActivationSpec(JBossMessageEndpointFactory.java:294)
      ... 54 more

      This appears to be because the topic defined in the deploy\messaging folder is created at a later stage during deployment:

      2008-03-04 11:30:08,479 DEBUG [org.jboss.jms.server.destination.TopicService] Starting jboss.messaging.destination:service=Topic,name=testTopic
      2008-03-04 11:30:08,494 DEBUG [org.jboss.jms.server.DestinationJNDIMapper] topic testTopic registered
      2008-03-04 11:30:08,494 DEBUG [org.jboss.jms.server.DestinationJNDIMapper] topic bound in JNDI as /topic/testTopic

      As a workaround, i renamed the EAR file to ZEJB3Persistence.ear (note that the filename now starts with Z), so that this file is picked up for deployment after deploying the topic in the messaging folder. I then restarted JBoss with came up fine without any errors and deployed the EAR and MDB.

      Please see the forum reference for more details.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jaikiran Jaikiran Pai (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: