0 Replies Latest reply on Apr 2, 2012 8:30 AM by beaster

    JBoss AS7.1 EAR Deployment

    beaster

      The application I work on is a rather large EAR. It deploys 70 EJB jars (containing multiple EJB 2.1) and 2 WARs.

      The application was recently moved from another application server platform to JBoss AS6.1.

      WeI decided to see if the application might run on JBoss AS7.1.

       

      The entire EAR, EJB jars and WARs are deployed exploded.

      One of the first hurdles I ran into was due to how we deploy the EJBs from within the EAR.

      The EJBs are packaged in the EAR in a little hierarchy.

       

      ear

           ejb

                ejbs

                     ejb01.jar

                     ejb02.jar

                entities

                     entity01.jar

       

      So within ear/META-INF/application.xml we would have the following:

       

          <module><ejb>ejb/ejbs/ejb01.jar</ejb></module>

          <module><ejb>ejb/ejbs/ejb02.jar</ejb></module>

          <module><ejb>ejb/entities/entity01.jar</ejb></module>

       

      These paths work fine on JBoss AS6.1 for both development on Windows and deployment on Linux.

      The problem I ran into on JBoss AS7.1 is on Windows I have to use the back-slash.  Now application.xml is no longer portable to Linux.

      My bigger concern is the JNDI names that are generated during deployment.  They are no longer portable between Windows and Unix.

       

      Now on JBoss AS7.1 I found I need the following in ear/META-INF/application.xml

       

          <module><ejb>ejb\ejbs\ejb01.jar</ejb></module>

          <module><ejb>ejb\ejbs\ejb02.jar</ejb></module>

          <module><ejb>ejb\entities\entity01.jar</ejb></module>

       

      So a single EJB 2.1 has generated JNDI names that appear like the following:

       

      java:global/Test Application/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBHomeI

      java:app/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBHomeI

      java:module/test.EJBHome!com.test.server.ejb.EJBHomeI

      java:jboss/exported/Test Application/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBHomeI

      java:global/Test Application/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBI

      java:app/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBI

      java:module/test.EJBHome!com.test.server.ejb.EJBI

      java:jboss/exported/Test Application/ejb\ejbs\admin/test.EJBHome!com.test.server.ejb.EJBI

       

      These generated JNDI names also contain the Windows specific back-slash so the names are not portable across Windows and a Unix environment.

       

      Is this behavior an oversight?