I've hit trouble moving my JAXB-unmarshalled web service (based on
Spring Web Services 1.0.0) from Tomcat 5.5.23 to Geronimo 2.0.1; stack
trace below. I used JDK6 on Linux for both TC and Geronimo.

I stripped the .war down to use dummy empty implementations of
everything, with no extra jar's, so that only the unmarshalling was
causing a problem.
(I generate my JAXB classes with JDK wsimport on the command line and
include them in WEB-INF/classes, so unlike for Axis2 and CXF they don't
include Geronimo machinery-maybe this is a problem.)

I think the problem is because of Geronimo's Axis 2 SAAJ implementation,
and it can't be overridden even when classloader priority is configured
to be to the servlet context. Also, I've tried setting JAVA_OPTS in the
geronimo.sh startup script to include
-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.S
OAPMessageFactory1_1Impl etc but it had no effect.

My fix was to replace the impl and api jars in the Geronimo repository
with empty files, so that the deployer's dependency checker was fooled
and rmi and the server started without complaining.
Now my web service works. But I have a bad feeling about what I've just
done to Geronimo - probably it will prevent me using CXF in the same
server.

Anyone got a better workaround, or a fix for Geronimo?

16:33:04,183 WARN [SoapMessageDispatcher] Endpoint invocation resulted
in exception - responding with SOAP Fault
java.lang.ClassCastException:
org.apache.axiom.soap.impl.dom.SOAPMessageImpl cannot be cast to
org.apache.axiom.om.impl.dom.ElementImpl
at org.apache.axis2.saaj.NodeImplEx.toSAAJNode2(NodeI mplEx.java:260)
at org.apache.axis2.saaj.NodeImplEx.toSAAJNode(NodeIm plEx.java:181)
at org.apache.axis2.saaj.SOAPElementImpl.getParentEle
ment(SOAPElementImpl.java:723)
at org.apache.axis2.saaj.SOAPElementImpl.getParentNod
e(SOAPElementImpl.java:778)
at com.sun.xml.bind.unmarshaller.DOMScanner.buildName
spaceSupport(DOMScanner.java:159)
at com.sun.xml.bind.unmarshaller.DOMScanner.buildName
spaceSupport(DOMScanner.java:159)
at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMS canner.java:100)
at com.sun.xml.bind.v2.runtime.unmarshaller.Unmarshal
lerImpl.unmarshal0(UnmarshallerImpl.java:288)
at com.sun.xml.bind.v2.runtime.unmarshaller.Unmarshal
lerImpl.unmarshal(UnmarshallerImpl.java:271)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.un
marshal(AbstractUnmarshallerImpl.java:107)
at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmar
shal(Jaxb2Marshaller.java:312)
at org.springframework.ws.support.MarshallingUtils.un
marshal(MarshallingUtils.java:54)
at org.springframework.ws.server.endpoint.adapter.Mar
shallingMethodEndpointAdapter.unmarshalRequest(Mar
shallingMethodEndpointAdapter.java:145)
at org.springframework.ws.server.endpoint.adapter.Mar
shallingMethodEndpointAdapter.invokeInternal(Marsh
allingMethodEndpointAdapter.java:135)
at org.springframework.ws.server.endpoint.adapter.Abs
tractMethodEndpointAdapter.invoke(AbstractMethodEn
dpointAdapter.java:58)
at org.springframework.ws.server.MessageDispatcher.di
spatch(MessageDispatcher.java:211)
at org.springframework.ws.server.MessageDispatcher.re
ceive(MessageDispatcher.java:158)
at org.springframework.ws.transport.support.WebServic
eMessageReceiverObjectSupport.handleConnection(Web
ServiceMessageReceiverObjectSupport.java:87)
at org.springframework.ws.transport.http.WebServiceMe
ssageReceiverHandlerAdapter.handle(WebServiceMessa
geReceiverHandlerAdapter.java:57)
at org.springframework.ws.transport.http.MessageDispa
tcherServlet.doService(MessageDispatcherServlet.ja va:158)
at org.springframework.web.servlet.FrameworkServlet.p
rocessRequest(FrameworkServlet.java:475)
at org.springframework.web.servlet.FrameworkServlet.d
oPost(FrameworkServlet.java:440)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:806)
at org.apache.catalina.core.ApplicationFilterChain.in
ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do
Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo
ke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invo
ke(StandardContextValve.java:175)
at org.apache.geronimo.tomcat.valve.DefaultSubjectVal
ve.invoke(DefaultSubjectValve.java:56)
at org.apache.geronimo.tomcat.GeronimoStandardContext
$SystemMethodValve.invoke(GeronimoStandardContext. java:351)
at org.apache.geronimo.tomcat.valve.GeronimoBeforeAft
erValve.invoke(GeronimoBeforeAfterValve.java:47)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invok
e(StandardEngineValve.java:109)
at org.apache.catalina.valves.AccessLogValve.invoke(A
ccessLogValve.java:563)
at org.apache.catalina.connector.CoyoteAdapter.servic
e(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(H
ttp11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11Conn
ectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(
JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

Reply via email to