2 Replies Latest reply on May 15, 2009 6:53 AM by jaikiran

    EJB deploy before queue is ready

      Hello,

      I'm have a sar which has an ejb jar and a jboss-service.xml with queue definitions which the mdbs point to. The issue is when I deploy the sar, the ejb jar is being deployed before the queues are created, but just barely.

      There is an error that it couldn't find the queue to bind the MDB to and states a temporary queue will be created - it errors saying that queue has already been created. After that error, JBoss tries and successfully binds the MDB to the queue.

      From what I can tell, it seems to be an issue of timing, it's deploying the EJBs and creating the queues at the same time. Is there any way to tell the EJBs to wait for the queues - other than putting some dependency on the EJBDeployer itself? For instance, any way in the ejb-jar.xml to tell the ejbs to wait for the queue to be created before trying to be deployed?

      Thanks,

      Randall

      NOTE: If this is in the wrong forum, my apologies.

        • 1. Re: EJB deploy before queue is ready
          skajotde

          The same problem was on Weblogic 8. I'm courius of proper solution.

          • 2. Re: EJB deploy before queue is ready
            jaikiran

             

            From what I can tell, it seems to be an issue of timing, it's deploying the EJBs and creating the queues at the same time. Is there any way to tell the EJBs to wait for the queues - other than putting some dependency on the EJBDeployer itself? For instance, any way in the ejb-jar.xml to tell the ejbs to wait for the queue to be created before trying to be deployed?


            You can do that through jboss.xml. Here's an example:
            <enterprise-beans>
             <session>
             <ejb-name>MyEJB</ejb-name>
             <depends>jboss.mq.destination:name=DLQ,service=Queue</depends>
            ...
             </session>
            ...
             </enterprise-beans>

            The EJB then will deploy after the DLQ queue is deployed. You will have to check the jmx-console to find the correct MBean service name for the queue.