6 Replies Latest reply on Oct 4, 2005 12:30 AM by vasily.ivanov

    JBoss Deployment order within ear

    mentiro

      Looking at MainDeployer, there does not seem to be any way to override the deployment sorter within an EAR file. What I want to do is use a deployment sorter similar to the prefix sorter that can be configured for the deployment scanner. I need to deploy a war file within my ear before deploying an MBean sar. Is there a way to configure this, and if not, why isn't there a way to override the standard deployment sorter?

      Also, I see documentation stating that "last" is the last type of archive to be deployed, but I cannot find any documentation that shows how this can be implemented. For example, can I create a deploy.last archive containing my sar archive? How would that affect my jboss-app and application.xml?

        • 1. Re: JBoss Deployment order within ear

          Have you tried adding a depends element to your SAR's jboss-service.xml? Something like:

          <mbean code="my.MBean" name="...">
           <depends>jboss.management.local:J2EEApplication=null,J2EEServer=Local,j2eeType=WebModule,name=my.war</depends>
          ...
          </mbean>
          

          I'm not sure what the JMX name should be for a deployed WAR, but looking through the JMX console, the above example would be my guess.

          • 2. Re: JBoss Deployment order within ear

            Just noticed that you're within in EAR file, so perhaps try setting J2EEApplication=... to the name of your ear.

            • 3. Re: JBoss Deployment order within ear
              mentiro

              Yeah - I tried adding a element to the SAR to make my MBean start after the WAR. I tried adding depends tags like the following:

              <depends>jboss.management.local:J2EEApplication=tdi.ear,J2EEServer=Local,j2eeType=WebModule,name=tdi.war</depends>

              <depends>jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/tdi</depends>

              When I added any depends tag, the Mbean would simply not deploy and say that the above MBeans were NOTYETINSTALLED. However, if I went to the jmx-console, they appeared exactly the same.

              One problem is that MainDeployer does not allow you to override its URLComparator. It declares the URLComparator as "private final". To workaround this problem and the fact that the depends tag did not work, I split my war out of my ear and used the Prefix Deployment Scanner sorter.

              This did deploy the war before the ear (in other words, the war before the MBean) but the war resources were still not available until after JBoss had fully started. To test if this was really the case I added a Thread.sleep() call to one of my MBeans and made it wait for a few minutes. At this point the war had already deployed, but the war resources could not be accessed from a web browser.

              So, I have two problems:

              1. I can't get the war to deploy before my MBean if they are in the same EAR. I have tried several depends elements to no avail.

              2. Even when I do get the war to deploy before the MBean by separating it from my ear, the war resources are not available to the MBean and do not seem to be available until after JBoss completely starts up.


                Any help would be greatly appreciated.


              • 4. Re: JBoss Deployment order within ear
                mentiro

                Any JBoss developers have any idea about this?

                • 5. Re: JBoss Deployment order within ear
                  mentiro

                  Any update on this issue? Does JBoss allow you to control deployment order within an EAR yet?

                  • 6. Re: JBoss Deployment order within ear
                    vasily.ivanov

                    I have the same problem at the moment and I think this can help us: http://wiki.jboss.org/wiki/Wiki.jsp?page=BarrierController