I have a web application that uses RMI. This application works fine when my app is either deployed in exploded form or when I deploy as a WAR but set unpackWars="false". When I set unpackWars="true" I get EOFException each time I call Naming.lookup(url) (where url is something like //localhost:9222/FooObject)
Stack trace? JDK version? Also downgrading from critical, as you noted alternative deployments work.
JDK 1.5.0_06 Stack trace on it's way...
com.endeca.esf.EsfException: Error connecting to //localhost:9222/ComponentFactory: error unmarshalling return; nested exception is: java.io.EOFException at com.endeca.esf.framework.RemoteLookup.lookupComponentFactory (RemoteLookup.java:15) at com.endeca.esf.framework.builder.ApplicationBuilder.getRemoteComponentFactory (ApplicationBuilder.java:90) at com.endeca.esf.framework.builder.ApplicationBuilder.processComponent (ApplicationBuilder.java:74) at com.endeca.esf.framework.builder.ApplicationBuilder.buildApplicationImpl (ApplicationBuilder.java:57) at com.endeca.esf.framework.builder.ApplicationBuilder.buildApplication (ApplicationBuilder.java:35) at com.endeca.esf.service.ProvisioningPortSOAPBindingImpl.createApplicationFromSpe c(ProvisioningPortSOAPBindingImpl.java:50) at com.endeca.esf.service.ProvisioningPortSOAPBindingImpl.defineApplication (ProvisioningPortSOAPBindingImpl.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod (RPCProvider.java:388) at org.apache.axis.providers.java.RPCProvider.processMessage (RPCProvider.java:283) at org.apache.axis.providers.java.JavaProvider.invoke (JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.visit (InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke (SOAPService.java:453) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost (AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service (AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:432) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConn ection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.EOFException at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at com.endeca.esf.framework.RemoteLookup.lookupComponentFactory (RemoteLookup.java:13) ... 37 more Caused by: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte (ObjectInputStream.java:2502) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) at sun.rmi.server.MarshalInputStream.readLocation (MarshalInputStream.java:285) at sun.rmi.server.MarshalInputStream.resolveProxyClass (MarshalInputStream.java:228) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457) at java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:1693) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) ... 40 more Apr 17, 2006 3:12:04 PM com.endeca.esf.service.ComponentImpl severe SEVERE: 'Define application' request encountered an error for application 'agidx' com.endeca.esf.EsfException: Error connecting to //localhost:9222/ComponentFactory: error unmarshalling return; nested exception is: java.io.EOFException at com.endeca.esf.framework.RemoteLookup.lookupComponentFactory (RemoteLookup.java:15) at com.endeca.esf.framework.builder.ApplicationBuilder.getRemoteComponentFactory (ApplicationBuilder.java:90) at com.endeca.esf.framework.builder.ApplicationBuilder.processComponent (ApplicationBuilder.java:74) at com.endeca.esf.framework.builder.ApplicationBuilder.buildApplicationImpl (ApplicationBuilder.java:57) at com.endeca.esf.framework.builder.ApplicationBuilder.buildApplication (ApplicationBuilder.java:35) at com.endeca.esf.service.ProvisioningPortSOAPBindingImpl.createApplicationFromSpe c(ProvisioningPortSOAPBindingImpl.java:50) at com.endeca.esf.service.ProvisioningPortSOAPBindingImpl.defineApplication (ProvisioningPortSOAPBindingImpl.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod (RPCProvider.java:388) at org.apache.axis.providers.java.RPCProvider.processMessage (RPCProvider.java:283) at org.apache.axis.providers.java.JavaProvider.invoke (JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.visit (InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke (SOAPService.java:453) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost (AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service (AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:432) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConn ection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.EOFException at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at com.endeca.esf.framework.RemoteLookup.lookupComponentFactory (RemoteLookup.java:13) ... 37 more Caused by: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte (ObjectInputStream.java:2502) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) at sun.rmi.server.MarshalInputStream.readLocation (MarshalInputStream.java:285) at sun.rmi.server.MarshalInputStream.resolveProxyClass (MarshalInputStream.java:228) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457) at java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:1693) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) ... 40 more
Again this seems to only affect RMI and only happens when you have a war file that tomcat unpacks but this happens to be the way most of our apps are deployed.
Understood. Any chance of a simpler test app to show this? We don't have access to the com.endeca classes, and I don't particularly feel like setting up a test Axis server either... Maybe a one-class webapp that just tests marshalling / unmarshalling via RMI?
I'll try to write you a sample app. If you get to it first simply ignore the endeca and axis stuff. Just try to make an RMI request from a servlet.
The chances of me getting to it first are nil ;)
Ping? Still the case with Tomcat 5.5.20?
I can't repeat this with the latest trunk (with a 1.6 JVM) or with the latest 5.5.x (with a 1.5 JVM).