![]() ![]() | ||
| Home>>>> | ||
JDK 6Quick Table of Contents2. Upgrade Issuesorg.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:298)
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:309)
at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartImpl.java:305)
at com.sun.xml.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.java:942)
at com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1093)
... 28 more
The full stack trace was not shown. After debugging the remainder can be printed:
org.apache.xml.serializer.utils.WrappedRuntimeException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
at org.apache.xml.serializer.SerializerFactory.getSerializer(SerializerFactory.java:177)
at org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:259)
at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:329)
at com.sun.xml.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:390)
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:296)
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:309)
The casting is done at
cls = ObjectFactory.findProviderClass(className, loader, true);
SerializationHandler sh =
(SerializationHandler) cls.newInstance();
cls.getClassLoader() seems correct. org.apache.xml.serializer.SerializationHandler.class.getClassLoader() is from another webapp's class loader. I'm not sure why. Thread.currentThread().getContextClassLoader().loadClass("org.apache.xml.serializer.SerializationHandler").getClassLoader() is from the current webapp's class loader One fix is to put Xalan into the endorsed lib path of the jre. For tomcat, this in the jakarta-tomcat-5.5.7/common/endorsed directory. Or you can get away with putting it into the shared/lib directory in $CATALINA_BASE. 3. JVM PropertiesOmitStackTraceInFastThrowYou can use -XX:-OmitStackTraceInFastThrow or -XX:+OmitStackTraceInFastThrow on Sun's JVM. I'm not sure under what conditions a stack trace does not appear but you could see errors like
java.lang.NullPointerException
at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:47)
at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:115)
| ||