I am having a problem loading classes when my applet reconnects to the backup server after a network failure. My messages are taking a very long time to be processed and I think that it is because the ClassLoadingAwareObjectInputStream is still trying to connect to the original server that served up the applet.
I think that the ClassLoadingAwareObjectInputStream is still referencing the original classloader URL and has to wait for that request to timeout before it falls to the backup classloader. Another strange thing is that this appears to only be happening for the primitive types. (int, boolean, etc.) I have not yet seen it fail for any other class. I have several threads blocked waiting for an ActiveMQ Session Task to release it's lock. I have included the stacktrace. Name: ActiveMQ Session Task-96 State: RUNNABLE Total blocked: 19 Total waited: 77 Stack trace: java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) - locked java.net.TwoStacksPlainSocketImpl@1dcac73 java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) java.net.AbstractPlainSocketImpl.connect(Unknown Source) java.net.PlainSocketImpl.connect(Unknown Source) java.net.SocksSocketImpl.connect(Unknown Source) java.net.Socket.connect(Unknown Source) sun.security.ssl.SSLSocketImpl.connect(Unknown Source) sun.net.NetworkClient.doConnect(Unknown Source) sun.net.www.http.HttpClient.openServer(Unknown Source) sun.net.www.http.HttpClient.openServer(Unknown Source) - locked sun.net.www.protocol.https.HttpsClient@bdc77d sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) sun.net.www.protocol.https.HttpsClient.New(Unknown Source) sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) - locked sun.net.www.protocol.https.DelegateHttpsURLConnection@1c204d7 java.net.HttpURLConnection.getResponseCode(Unknown Source) sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source) sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) - locked sun.plugin2.applet.Applet2ClassLoader@1fe96f2 sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) - locked sun.plugin2.applet.Applet2ClassLoader@1fe96f2 java.lang.ClassLoader.loadClass(Unknown Source) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Unknown Source) org.apache.activemq.util.ClassLoadingAwareObjectInputStream.load(ClassLoadingAwareObjectInputStream.java:77) org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveClass(ClassLoadingAwareObjectInputStream.java:46) java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) java.io.ObjectInputStream.readClassDesc(Unknown Source) java.io.ObjectInputStream.readClass(Unknown Source) java.io.ObjectInputStream.readObject0(Unknown Source) java.io.ObjectInputStream.readArray(Unknown Source) java.io.ObjectInputStream.readObject0(Unknown Source) java.io.ObjectInputStream.defaultReadFields(Unknown Source) java.io.ObjectInputStream.readSerialData(Unknown Source) java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) java.io.ObjectInputStream.readObject0(Unknown Source) java.io.ObjectInputStream.defaultReadFields(Unknown Source) java.io.ObjectInputStream.readSerialData(Unknown Source) java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) java.io.ObjectInputStream.readObject0(Unknown Source) java.io.ObjectInputStream.readObject(Unknown Source) org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:185) com.mypackage.MyClass$2.processObjectMessage(MyClass.java:386) com.mypackage.JMSMessageProcessor.onMessage(JMSMessageProcessor.java:29) - locked com.mypackage.MyClass$2@9595d2 org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1321) - locked java.lang.Object@40c537 org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129) org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source) -- View this message in context: http://activemq.2283324.n4.nabble.com/Applet-Class-Loader-Problems-tp4671835.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.