Uploaded image for project: 'Spring Web Services'
  1. Spring Web Services
  2. SWS-457

AxiomSoapMessageFactory payloadCaching=false causes org.springframework.ws.soap.axiom.AxiomSoapEnvelope.getBody() to fail

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.5.5
    • Fix Version/s: 1.5.6
    • Component/s: Core
    • Labels:
      None
    • Environment:
      Spring 2.5.6, Windows xp, Jetty 6.1.11, apache.axiom 1.2.7, Soap UI, saaj-api and saaj-impl 1.3, jaxen 1.1

      Description

      http://forum.springframework.org/showthread.php?t=64350

      Hello,

      I have problem with AxiomSoapMessageFactory payloadCaching=false.

      Spring config is simple as this:

      <bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
        <property name="payloadCaching" value="false"/>
      </bean>
      
      <bean class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping">
        <property name="mappings">
          <props>
            <prop key="SoapAction1">endpoint1</prop>
          </props>
        </property>
      </bean>
      
      <bean id="wsdl" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
        <property name="schema" ref="schema" />
        <property name="portTypeName" value="resource1" />
        <property name="locationUri" value="/service1/" />
        <property name="targetNamespace" value="my.service" />
        <property name="soapActions">
          <props>
            <prop key="UploadAddressMaterial">SoapAction1</prop>
          </props>
        </property>
      </bean>
      
      <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema ">
        <property name="xsd" value="/WEB-INF/schema.xsd" />
      </bean>
      

      I'm not using any kind of interceptors.

      Actual ws end point extends AbstractStaxStreamPayloadEndpoint but the request doesn't get that far.

      I get exception "com.sun.jdi.InvocationException occurred invoking method." when trying to invoke the web service in method org.springframework.ws.soap.axiom.AxiomSoapEnvelope.getBody().

      Line 59 SOAPBody axiomBody = getAxiomEnvelope().getBody(); fails some how and the OMException on line 71 is catched. This leads to:

      "Nested in org.springframework.ws.soap.axiom.AxiomSoapMessage Exception: Could not write message to OutputStream: problem accessing the parser. Parser already accessed!; nested exception is javax.xml.stream.XMLStreamException: problem accessing the parser. Parser already accessed!:
      java.lang.IllegalStateException: Parser already accessed! "

      I am running spring ws v.1.5.5 and spring core 2.5.6.

      Everything works fine if payloadCaching is true.

      Is this a bug? There is a resolved Jira that looks much the same: id SWS-359

        Attachments

        1. echo.zip
          23 kB
        2. nikkeri_echo.zip
          473 kB
        3. screenshot-1.jpg
          screenshot-1.jpg
          151 kB
        4. screenshot-2.jpg
          screenshot-2.jpg
          207 kB

          Activity

            People

            • Assignee:
              arjen.poutsma Arjen Poutsma
              Reporter:
              nikkeri Nikkeri2001
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: