-none- 2007-08-16 - By Matthew Kerle
Back you're exactly right again. I just checked my project settings, I had to add catalina.jar to the project libraries to get the class to compile, but I'd forgotten to prevent it from being deployed, so there was a copy of catalina.jar in my /WEB-INF/lib, doh!
So I configured it to not be deployed, and deleted the existing jar, so now I get a new problem, a NoClassDefFoundError on the MemoryUser class, which is referenced by my code. So now my class doesn't even load!! I have a feeling someone's gone to a fair bit of trouble to make sure I can't load this class!
the MemoryUser class is in catalina.jar, which is in the server/lib folder. would I be right in saying that web application code is barred from loading any classes from the server/lib directory?
any ideas Peter?
org.codehaus.xfire.XFireRuntimeException: Error invoking 'myapp.service.webservice.ImageService.enumerateLOV(java.lang.String)'. Nested exception is java.lang.reflect.InvocationTargetException: null java.lang.reflect.InvocationTargetException 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:597) at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java :59) ... elided at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:269) ... elided at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NoClassDefFoundError: org/apache/catalina/users/MemoryUser at myapp.service.webservice.ImageServiceImpl.enumerateLOV(ImageServiceImpl.java:67) ... 31 more
Peter Crowther wrote: > Right. So request.getUserPrincipal() returns a class that's loaded by > one of Tomcat's classloaders. You need to make sure that when you > reference MemoryUser, it's loaded by the same classloader. > > Thinking aloud here, so apologies to the more experienced folks in the > community who will have better ideas... Is MemoryUser.class in any of > the jars in your webapp? I'm not entirely sure why there's a second > copy of it, loaded by the webapp's classloader, in the system. I'd > expect the webapp's classloader to be unable to find the class as your > webapp loads and punt the request for the class up the classloader > chain, returning the standard classloader's class. But I may be > misunderstanding Tomcat's classloaders. > > - Peter
-- Matthew Kerle IT Consultant Canberra, Australia
Mobile: +61404 096 863 Email : mattkerle@(protected) Web : http://threebrightlights.blogspot.com/
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To start a new topic, e-mail: users@(protected) To unsubscribe, e-mail: users-unsubscribe@(protected) For additional commands, e-mail: users-help@(protected)
|
|