Results 1 to 9 of 9

Thread: trouble with SAAJ

  1. #1
    Join Date
    Jul 2007
    Posts
    4

    Default trouble with SAAJ

    I am trying to set up a relatively simple web service using Spring WS, but am running into an error in the SAAJ classes. My environment is Java SDK 1.6, Tomcat 6.0.13, using spring-ws 1.0-rc2 maven bundles. The service is set up to use the Jaxb2Marshaller.

    When debugging my webservice with a simple soap client (soapui.org) I get an error on any dummy request, somewhere during serialization of the response object stuff breaks down:

    The following occurs in my catalina.out:
    Code:
    SEVERE: SAAJ0539: Unable to get header stream in saveChanges
    Jul 23, 2007 5:43:36 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl sav
    eChanges
    SEVERE: SAAJ0540: Error during saving a multipart message
    Corresponding stacktrace in localhost.log:
    Code:
    java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to
     org.apache.xml.serializer.SerializationHandler
            at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Env
    elopeImpl.java:298)
            at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Env
    elopeImpl.java:309)
            at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStr
    eam(SOAPPartImpl.java:305)
            at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(M
    essageImpl.java:947)
            at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(Mess
    ageImpl.java:1098)
            at org.springframework.ws.soap.saaj.Saaj13Implementation.writeTo(Saaj13I
    mplementation.java:236)
    I am stumped (nor have I been able to find anything helpful through Google). If anybody has a clue as to what could be wrong (doubtless it's something simple, I am a Spring-WS newbie) that would be most helpful!

  2. #2
    Join Date
    Jul 2007
    Posts
    4

    Default

    Ok, so it turns out that using Java SE (and a host of maven dependencies to get SAAJ and other necessary functionality) is not a good idea. The problem went away after switching to a Java 5 EE environment... My bad :S

  3. #3
    Join Date
    Sep 2007
    Posts
    9

    Default Similar problems on spring-ws 1.0

    Hi, I have run into similar problem. I evaluate the spring-ws and during some testing, I tested the EndpointExceptionResolvers functionality. Basically, I throwed a RuntimeException at the end of the endpoint invokeInternal(Element) method and I got this stacktrace. Google sent me here, as this place was the only result. I'm feeling lucky, I guess.

    configuration:

    <!-- Exception handling -->
    <bean id="exceptionResolver" class="org.springframework.ws.soap.server.endpoint .SoapFaultMappingExceptionResolver">
    <property name="defaultFault" value="SERVER"/>
    <property name="exceptionMappings">
    <value>java.lang.RuntimeException=SERVER,Invalid request bobe</value>
    </property>

    relevant parts of pom.xml:

    <plugins>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.6</source>
    <target>1.6</target>
    </configuration>
    </plugin>
    </plugins>

    </build>
    <dependencies>
    <dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-core-tiger</artifactId>
    <version>1.0.0</version>
    </dependency>
    <dependency>
    <groupId>xom</groupId>
    <artifactId>xom</artifactId>
    <version>1.1</version>
    </dependency>
    <dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>saaj-api</artifactId>
    <version>1.3</version>
    <scope>runtime</scope>
    </dependency>
    <dependency>
    <groupId>com.sun.xml.messaging.saaj</groupId>
    <artifactId>saaj-impl</artifactId>
    <version>1.3</version>
    <scope>runtime</scope>
    </dependency>
    </dependencies>

    java:

    java version "1.5.0_12"

    stacktraces to be posted in the next post.

  4. #4
    Join Date
    Sep 2007
    Posts
    9

    Default stacktrace

    2007-09-07 18:22:33,925 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - MessageDispatcher with name 'spring-ws' received request [SaajSoapMessage {http://company.com/provisioning/ipquery}GetUserIPRequest]
    2007-09-07 18:22:33,925 DEBUG org.springframework.ws.server.endpoint.mapping.Pay loadRootQNameEndpointMapping - Looking up endpoint for [{http://company.com/provisioning/ipquery}GetUserIPRequest]
    2007-09-07 18:22:33,925 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.Pay loadRootQNameEndpointMapping@6d75b6] maps request to endpoint [company.com.provisioning.queries.ip.IPQueryEndpoin t@19de181]
    2007-09-07 18:22:33,927 DEBUG org.springframework.ws.soap.server.endpoint.interc eptor.PayloadValidatingInterceptor - Request message validated
    2007-09-07 18:22:33,927 DEBUG org.springframework.ws.server.endpoint.interceptor .PayloadLoggingInterceptor - Request: <ipq:GetUserIPRequest xmlns:ipq="http://company.com/provisioning/ipquery">
    <!--You have a CHOICE of the next 2 items at this level-->
    <ipq:UserQuery>
    <ipq:AccountID>?</ipq:AccountID>
    </ipq:UserQuery>
    </ipq:GetUserIPRequest>
    2007-09-07 18:22:33,927 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - Testing endpoint adapter [org.springframework.ws.server.endpoint.adapter.Mes sageEndpointAdapter@fdb413]
    2007-09-07 18:22:33,927 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - Testing endpoint adapter [org.springframework.ws.server.endpoint.adapter.Pay loadEndpointAdapter@396fce]
    2007-09-07 18:22:33,928 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - Testing endpoint exception resolver [org.springframework.ws.soap.server.endpoint.SoapFa ultMappingExceptionResolver@db5b3f]
    2007-09-07 18:22:33,928 WARN org.springframework.ws.soap.server.SoapMessageDisp atcher - Endpoint invocation resulted in exception - responding with SOAP Fault
    java.lang.RuntimeException: Fake fault!
    at company.com.provisioning.queries.ip.IPQueryEndpoin t.invokeInternal(IPQueryEndpoint.java:73)
    at org.springframework.ws.server.endpoint.AbstractXom PayloadEndpoint.invokeUsingReflection(AbstractXomP ayloadEndpoint.java:122)
    at org.springframework.ws.server.endpoint.AbstractXom PayloadEndpoint.invoke(AbstractXomPayloadEndpoint. java:107)
    at org.springframework.ws.server.endpoint.adapter.Pay loadEndpointAdapter.invoke(PayloadEndpointAdapter. java:48)
    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:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    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.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.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)
    2007-09-07 18:22:33,929 DEBUG org.springframework.ws.soap.server.SoapMessageDisp atcher - MessageDispatcher with name 'spring-ws' sends response [SaajSoapMessage {http://schemas.xmlsoap.org/soap/envelope/}Fault] for request [SaajSoapMessage {http://company.com/provisioning/ipquery}GetUserIPRequest]
    2007-09-07 18:22:33,931 DEBUG org.springframework.ws.transport.http.MessageDispa tcherServlet - Could not complete request
    org.springframework.ws.soap.saaj.SaajSoapMessageEx ception: Could not write message to OutputStream: Error during saving a multipart message; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionI mpl: Error during saving a multipart message
    Caused by:
    com.sun.xml.internal.messaging.saaj.SOAPExceptionI mpl: Error during saving a multipart message
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1126)
    at org.springframework.ws.soap.saaj.Saaj13Implementat ion.writeTo(Saaj13Implementation.java:259)
    at org.springframework.ws.soap.saaj.SaajSoapMessage.w riteTo(SaajSoapMessage.java:105)
    at org.springframework.ws.transport.AbstractWebServic eConnection.send(AbstractWebServiceConnection.java :36)
    at org.springframework.ws.transport.support.WebServic eMessageReceiverObjectSupport.handleConnection(Web ServiceMessageReceiverObjectSupport.java:96)
    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:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    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.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.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)
    Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionI mpl: Unable to get header stream in saveChanges:
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1103)
    ... 22 more
    Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:298)
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:309)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartI mpl.getContentAsStream(SOAPPartImpl.java:305)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.getHeaderBytes(MessageImpl.java:947)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1098)
    ... 22 more

  5. #5
    Join Date
    Sep 2007
    Posts
    9

    Default continue

    CAUSE:

    com.sun.xml.internal.messaging.saaj.SOAPExceptionI mpl: Unable to get header stream in saveChanges:
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1103)
    at org.springframework.ws.soap.saaj.Saaj13Implementat ion.writeTo(Saaj13Implementation.java:259)
    at org.springframework.ws.soap.saaj.SaajSoapMessage.w riteTo(SaajSoapMessage.java:105)
    at org.springframework.ws.transport.AbstractWebServic eConnection.send(AbstractWebServiceConnection.java :36)
    at org.springframework.ws.transport.support.WebServic eMessageReceiverObjectSupport.handleConnection(Web ServiceMessageReceiverObjectSupport.java:96)
    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:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    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.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.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)
    Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:298)
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:309)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartI mpl.getContentAsStream(SOAPPartImpl.java:305)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.getHeaderBytes(MessageImpl.java:947)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1098)
    ... 22 more

    CAUSE:

    java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:298)
    at com.sun.xml.internal.messaging.saaj.soap.impl.Enve lopeImpl.output(EnvelopeImpl.java:309)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartI mpl.getContentAsStream(SOAPPartImpl.java:305)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.getHeaderBytes(MessageImpl.java:947)
    at com.sun.xml.internal.messaging.saaj.soap.MessageIm pl.saveChanges(MessageImpl.java:1098)
    at org.springframework.ws.soap.saaj.Saaj13Implementat ion.writeTo(Saaj13Implementation.java:259)
    at org.springframework.ws.soap.saaj.SaajSoapMessage.w riteTo(SaajSoapMessage.java:105)
    at org.springframework.ws.transport.AbstractWebServic eConnection.send(AbstractWebServiceConnection.java :36)
    at org.springframework.ws.transport.support.WebServic eMessageReceiverObjectSupport.handleConnection(Web ServiceMessageReceiverObjectSupport.java:96)
    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:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    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.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.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)

  6. #6
    Join Date
    Sep 2007
    Posts
    9

    Default

    Any help would be appreciated.

  7. #7
    Join Date
    Jul 2005
    Location
    Rotterdam, the Netherlands
    Posts
    1,562

    Default

    When using Java 6, remove the xerces, xalan, and xml-api dependencies. That should do the trick.
    Arjen Poutsma

    Spring Web Services Dev Lead
    Please read the FAQ

  8. #8
    Join Date
    Sep 2007
    Posts
    9

    Default

    Thanks for the answer.

    The problem is getting really strange. At first, your suggestion worked, at least in the scenario where the invokeInternal method threw an exception. But it didn't work when the exception was not thrown - I got a NullPointerException from the XOM code. When trying to find out what was going on here I finally came to where I had begun - the dependencies are still there, everything works and i don't get the above error.

    Really strange. If I find out what was (or still is) wrong, I'll post it here for the sake of the generations to come.

  9. #9

    Default Thanks...

    Just remove the xerces, xalan, and xml-api dependencies. It works for me.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •