Remy, The stack trace was caused because TC4 was installed in a path with spaces. After that I tried in a path without spaces and it still didn't work.
I think there's two bugs here. One is the URL's should be encoded, but two, I should never have come across the first bug because the classes are being searched for in the wrong location. The actual issue is that with RMI, the classloader is not using the java.rmi.server.codebase parameter to search for the class. The class is available for download in \Tomcat\webapps\app\com\..\...\???.class, but it is being looked for in \Tomcat\webapps\app\WEB-INF\classes and \Tomcat\webapps\app\WEB-INF\lib\*.jar. The client should be looking at http://server/app/com/../.../???.class and shouldn't get this exception: Caused by: java.security.AccessControlException: access denied (java.io.FilePermission C:\Tomcat\webapps\spweb\WEB-INF\- read) Try the test case that is attached to the bug. It shows this bug. I don't mind this being fixed after the first stable 4.1.x release, but I am unable to put any version of TC4 into production at the moment because of this. Hope this explains my problem a bit better. Cheers. Dave. Here's the stack trace (The bottom bit is the important bit). 21 Aug 2002 11:27:03,014 FATAL CriticalException - RMI failed: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: access to class loader denied at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:292) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:7 01) at java.lang.Thread.run(Thread.java:536) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteC all.java:247) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133) at com.staffplanner.utils.rmi.StaffplannerRemoteImpl_Stub.executeTask(Unknown Source) at com.staffplanner.utils.rmi.RemoteController.execute(RemoteController.java:77 ) at com.staffplanner.utils.rmi.RemoteServer.callRemote(RemoteServer.java:56) at com.staffplanner.utils.rmi.RemoteServer.callRemote(RemoteServer.java:38) at com.staffplanner.utils.rmi.XNServer.getNextFosKey(XNServer.java:21) at com.staffplanner.kernel.employees.Employee.getDefaultEposKeyNumber(Employee. java:1348) at com.staffplanner.pages.employees.EmployeeMaintenancePage$EmployeeMaintenance Data.<init>(EmployeeMaintenancePage.java:326) at com.staffplanner.pages.employees.EmployeeMaintenancePage.getScreenData(Emplo yeeMaintenancePage.java:513) at com.staffplanner.pages.base.MaintenancePage.processPageLoad(MaintenancePage. java:479) at com.staffplanner.pages.base.MaintenancePage.processPost(MaintenancePage.java :140) at com.staffplanner.pages.base.StaffPlannerPage.doPost(StaffPlannerPage.java:45 3) at com.staffplanner.servlets.StaffPlannerServlet.processRequest(StaffPlannerSer vlet.java:233) at com.staffplanner.base.ServletBase.doPost(ServletBase.java:71) at com.staffplanner.base.ServletBase.doGet(ServletBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application FilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja va:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja va:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2350) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve. java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java :174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:256) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:355) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:563) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:535) at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:638) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav a:533) at java.lang.Thread.run(Thread.java:536) Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: access to class loader denied at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:252) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:7 01) ... 1 more Caused by: java.lang.ClassNotFoundException: access to class loader denied at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:421) at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:159) at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631) at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257) at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324) at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:297) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:246) ... 6 more Caused by: java.security.AccessControlException: access denied (java.io.FilePermission C:\Tomcat\webapps\spweb\WEB-INF\- read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java :270) at java.security.AccessController.checkPermission(AccessController.java:401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:542) at sun.rmi.server.LoaderHandler$Loader.checkPermissions(LoaderHandler.java:1128 ) at sun.rmi.server.LoaderHandler$Loader.access$000(LoaderHandler.java:1082) at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:385) ... 17 more > -----Original Message----- > From: Remy Maucherat [mailto:[EMAIL PROTECTED]] > Sent: 20 August 2002 16:59 > To: Tomcat Developers List > Subject: Re: [4.1.9] Fix for major bugs > > David Oxley wrote: > > Hi Remy, > > > > I've just attached some comments to the bug log > > (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7082) that were > posted to > > the user list a week or so ago. They seem to explain exactly why this is > > happening. Have a read through and see what you think. > > I think the root cause of the problem is just that the URLs should be > encoded. As I said, this will be fixed after the first stable 4.1.x > release to avoid the possibility of introducing new bugs. > > In more complex scenarios, I suppose other problems can happen, but the > stack trace which was attached seemed to hint at a simple issue. > > Remy > > > -- > To unsubscribe, e-mail: <mailto:tomcat-dev- > [EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:tomcat-dev- > [EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>