Bug 39326 - RMI doesn't work when unpackWars="true"
Summary: RMI doesn't work when unpackWars="true"
Status: RESOLVED WORKSFORME
Alias: None
Product: Tomcat 5
Classification: Unclassified
Component: Unknown (show other bugs)
Version: 5.5.16
Hardware: PC Windows XP
: P2 normal (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-17 18:45 UTC by Matt Cross
Modified: 2009-07-07 11:56 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Cross 2006-04-17 18:45:09 UTC
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)
Comment 1 Yoav Shapira 2006-04-18 13:10:30 UTC
Stack trace?  JDK version?

Also downgrading from critical, as you noted alternative deployments work.
Comment 2 Matt Cross 2006-04-18 13:12:34 UTC
JDK 1.5.0_06
Stack trace on it's way...
Comment 3 Matt Cross 2006-04-18 13:15:04 UTC
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
Comment 4 Matt Cross 2006-04-18 13:17:08 UTC
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.
Comment 5 Yoav Shapira 2006-04-18 13:26:20 UTC
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?
Comment 6 Matt Cross 2006-04-18 13:31:30 UTC
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.
Comment 7 Yoav Shapira 2006-04-18 13:37:53 UTC
The chances of me getting to it first are nil ;)
Comment 8 Yoav Shapira 2006-12-24 19:05:15 UTC
Ping?  Still the case with Tomcat 5.5.20?
Comment 9 Mark Thomas 2009-07-07 11:56:20 UTC
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).