2 Replies Latest reply on Jul 18, 2007 8:14 PM by kpalania

    Classloader issues: Need to share libraries across web appli

    kpalania

      Hi,
      I have 2 applications (WAR and SAR). Currently, the same set of shared libraries are copied to both the locations and hence, I am running into a ClassCastException which appears to be due to ClassLoading issues (based on reading done). So, I need to move these to the EAR level (WAR and SAR applications are deployed as part of this EAR). How can I do that and what are the steps involved?

      I realize I need to change the UseJBossWebLoader flag in jboss/tomcat jboss-service.xml (perhaps) and make some more changes to jboss-app.xml but I can't seem to find the exact steps anywhere and without the perfect set of changes, ofcourse, JBoss is not going to be happy :(

        • 1. Re: Classloader issues: Need to share libraries across web a
          jaikiran

           

          So, I need to move these to the EAR level (WAR and SAR applications are deployed as part of this EAR). How can I do that and what are the steps involved?


          You will have to create an ear file containing the war file and the sar file. Additionally, you will require a application.xml file and a jboss-app.xml file (both in the META-INF folder of the ear). The application.xml will contain something like:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
          <application>
           <display-name>My Application</display-name>
          
           <module>
           <web>
           <web-uri>myApp.war</web-uri>
           <context-root>/myApp</context-root>
           </web>
           </module>
          </application>


          Then the jboss-app.xml will contain:
          <jboss-app>
           <loader-repository>
           tap:loader=myApp.ear
           <loader-repository-config>
           java2ParentDelegation=false
           </loader-repository-config>
           </loader-repository>
          
           <module>
           <service>myAppSar.sar</service>
           </module>
          
          
          </jboss-app>
          


          Replace myApp.war, myApp.ear and myAppSar.sar without appropriate names of your archives.

          The loader-repository in jboss-app.xml is optional in the jboss-app.xml, retain it if you want classloader isolation for the ear file.


          • 2. Re: Classloader issues: Need to share libraries across web a
            kpalania

            thanks very much jaikiran! i'll give this a shot and see how it goes. will respond with questions if there are some issues. thanks again!