JBoss AS7.1 EAR Deployment
beaster Apr 2, 2012 8:30 AMThe 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?