You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2003/01/17 17:10:40 UTC
DO NOT REPLY [Bug 16211] New: -
Classloader problems with Xerces
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16211>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16211
Classloader problems with Xerces
Summary: Classloader problems with Xerces
Product: Tomcat 4
Version: 4.1.18
Platform: PC
OS/Version: Windows NT/2K
Status: NEW
Severity: Major
Priority: Other
Component: Unknown
AssignedTo: tomcat-dev@jakarta.apache.org
ReportedBy: tomy@softwaredesign.com.br
Hi,
I'm running a JSP application, and have got some problems with the Tomcat's
classloader.
My application uses Xerces 2.0.1 (located on the application's WEB-INF/lib
directory), and Tomcat seems to use Xerces 2.2.0 (located on Tomcat's
common/endorsed directory). The exception I get when try to do some DOM
serialization using Xerces is:
--
java.lang.NoSuchMethodError
at org.apache.xml.serialize.XMLSerializer.reset(XMLSerializer.java:1516)
at
org.apache.xml.serialize.BaseMarkupSerializer.setOutputCharStream(BaseMarkupSerializer.java:335)
at org.apache.xml.serialize.XMLSerializer.<init>(XMLSerializer.java:207)
at com.sdspb.messaging.client.XPathWrapper.toXML(Unknown Source)
at com.sdspb.messaging.client.XPathWrapper.toXML(Unknown Source)
at com.sdspb.messaging.client.XPathWrapper.writeExternal(Unknown Source)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1167)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1822)
at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:475)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1209)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1822)
at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:475)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1209)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:263)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:101)
at com.sdspb.messaging.rmi.server.RMIMessagingServer_Stub.send(Unknown
Source)
at com.sdspb.messaging.rmi.client.RMIMessaging.send(Unknown Source)
at com.sdspb.messaging.presentation.MessageDispatcher.run(Unknown Source)
--
It seems that the classloader is trying to use the wrong Xerces classes, not
applying the precedence defined for Tomcat, which says that the application
local libraries are searched first:
* /WEB-INF/classes of your web application
* /WEB-INF/lib/*.jar of your web application
* Bootstrap classes of your JVM
* System class loader classses (described above)
* $CATALINA_HOME/common/classes
* $CATALINA_HOME/common/endorsed/*.jar
* $CATALINA_HOME/common/lib/*.jar
* $CATALINA_HOME/shared/classes
* $CATALINA_HOME/shared/lib/*.jar
I've tried to move the endorsed Xerces libraries to the Tomcat's "server/lib"
directory, to make sure only the Tomcat internals use the Xerces 2.2.0, but then
I get the following startup exception:
--
2003-01-17 11:36:23 ContextConfig[/contingency] Parse error in default web.xml
java.lang.NullPointerException
at org.apache.commons.digester.Digester.getXMLReader(Digester.java:892)
at org.apache.commons.digester.Digester.parse(Digester.java:1495)
at
org.apache.catalina.startup.ContextConfig.defaultConfig(ContextConfig.java:548)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:638)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3567)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2189)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at java.lang.reflect.Method.invoke(Native Method)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
--
Finally, I've replaced the Xerces 2.2.0 libs by the Xerces 2.0.1 libs, in the
"common/endorsed" directory, and it all worked fine. But this does not look like
the best solution, as it may not be applicable to all cases.
Thanks!
[]'s
Tomy Inhauser
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>