2 Replies Latest reply on Jan 5, 2009 1:26 AM by mrityunjay

    How to use my own common-collections.jar in jBoss 4.2.x

      I want to use my own common-collections.jar in my ear/war, as while invoking i am getting some serialization exception because the same class ListOrderedMap(which is inside common-collection.jar) is getting loaded by two loaders and while serialization it gives classcast exception. The class loader isolation steps are not solving the purpose.

        • 1. Re: How to use my own common-collections.jar in jBoss 4.2.x
          jaikiran

          How have you configured classloader scoping? Please post the relevant files and more details about your application packaging. Also please post the entire exception stacktrace.

          While posting logs or code or xml content, please wrap it in a code block by using the Code button in the message editor window. And please use the Preview button to ensure your post is correctly formatted.

          • 2. Re: How to use my own common-collections.jar in jBoss 4.2.x

            We tried the following steps for implementing classpath isolation in jBoss 4.2 (but not working as expected).


            First, edit the conf/jboss-service.xml file and set the NamingService CallByValue to true:


            <!-- The call by value mode. true if all lookups are unmarshalled using
            the caller's TCL, false if in VM lookups return the value by reference.
            -->
            true

            ...


            Second, edit the deploy/ear-deployer.xml file and set the Isolated and CallByValue attributes to true:


            <!-- EAR deployer, remove if you are not using ear deployments -->

            <!-- A flag indicating if ear deployments should have their own scoped
            class loader to isolate their classes from other deployments.
            -->
            true
            <!-- A flag indicating if the ear components should have in VM call
            optimization disabled.
            -->
            true



            Last, edit the deploy/jboss-web.deployer/META-INF/jboss-service.xml file and set the Java2ClassLoadingCompliance and UseJBossWebLoader attributes to false:





            <!-- Get the flag indicating if the normal Java2 parent first class
            loading model should be used over the servlet 2.3 web container first
            model.
            -->
            false

            true

            <!-- A flag indicating if the JBoss Loader should be used. This loader
            uses a unified class loader as the class loader rather than the tomcat
            specific class loader.
            -->
            false

            ----------------- The exception we are getting are as follows----------------

            2009-01-01 00:30:41,000 ERROR [STDERR] Caused by: java.io.InvalidClassException: org.apache.commons.collections.map.ListOrderedMap; class invalid for deserialization
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:571)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.util.HashMap.readObject(HashMap.java:1067)
            2009-01-01 00:30:41,000 ERROR [STDERR] at sun.reflect.GeneratedMethodAccessor269.invoke(Unknown Source)
            2009-01-01 00:30:41,000 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
            2009-01-01 00:30:41,000 ERROR [STDERR] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)