0 Replies Latest reply on Jun 8, 2010 6:01 AM by mimtiaz

    Deployment and classloader issues

      Hi,

       

      We have around 7 EAR's which needs to be deployed into JBoss, of which all the EAR's depend upon one EAR which contains an application that is required to be started before any other applicatons gets deployed and started. Also, we want to have all the EAR's to be loaded with their own(seperate) classloaders. To achieve this, we set the isolated property value to true in the ear-deployer-jboss-beans.xml file. Of these EAR's 4 (publish, rdesk, blueplanet, website) are having the WAR and the EJB submodules having MDBs in the EJB modules. The rest are having only WAR modules inside and they are starting perfectly fine without any issues. Every WAR module of an EAR contains a startup servlet, which determines whether the application has got started successfully or not. The problem here is with the EARs having the MDBs in them. It looks like JBoss is sharing the same classloader for all the EARs having MDBs in them. The state variable maintained to indentify the status of the application indicating if its started or not is getting always true once an EAR having MDB gets deployed into JBoss. Hence, the rest of the EARs followed by during the deployment fails to start the applications. Please be noted that we were able to start at least one EAR having MDBs in it along with the other EARs having only WARs. If we try to deploy another EAR having a WAR and MDBs it wont start the application with the above explained issue. Following are the details of the steps that we followed to achive this:

       

      • We have pointed all the EAR locations in the profile.xml as given below:           

               
      <value>${jboss.server.home.url}deploy</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/eac/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/edesk/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/jms/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/rdesk/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/publish/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/blueplanet/appserver/jboss</value>
      <value>file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/website/appserver/jboss</value>

       

      eac.ear located under "file:///D:/BM/Dev_Env/Commerce_10_0_Dev/modules/eac/appserver/jboss" is the one that is required by all other applications. Hence, we have placed the rest of the EARs inside a directory named "deploy.last" under thier respective deployment locations as specified above.

       

      • We set the isolated property value to true in the ear-deployer-jboss-beans.xml file as given below:

       

      <property name="isolated">true</property>

       

      • We have also specified the jboss-app.xml in each EAR as given below:

       

      <jboss-app>
            <loader-repository>
              blueplanet:archive=blueplanet.ear
              <loader-repository-config>
                java2ParentDelegation=true
              </loader-repository-config>
            </loader-repository>
      </jboss-app>

       

      • Also, specified the jboss-classloading.xml in each WAR as given below:

       

      <classloading xmlns="urn:jboss:classloading:1.0"
                      name="blueplanet.war"
                      domain="bpa_domain"
                      top-level-classloader="true"
                      export-all="NON_EMPTY"
                      import-all="true">
      </classloading>

       

      Nothing helped us to get rid of this issue.  Where are we going wrong ? Kindly help us with your valuable inputs. Your earliest inputs are highly appreciated.

       

      PS: Plese find the attached server log of JBoss related to this issue.

       

      Thanks,

      IM.