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

Using Axiom with payload caching off sometimes creates empty soap bodies

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.5.2
    • Fix Version/s: 1.5.3
    • Component/s: Core
    • Labels:
      None

      Description

      It appears that if you're using Castor to marshal your responses, and you're using Axiom without payload caching, that the SOAP response comes back with an empty Soap Body. I did not try this with other Marshalling technologies like JAXB, etc, so I'm not sure if it is restricted to Castor only or not.

      It looks like NonCachingPayload.DelegatingStreamWriter.writeEndDocument() never gets called at least when marshalling with Castor. Castor by default does not fire an endDocument SAX event (or close or flush for that matter). But if you call setMarshalAsDocument(true) on a castor marshaller it does call endDocument().

      I just now worked around this with Castor by creating a simple subclass of CastorMarshaller like this below:
      public class MyCastorMarshaller extends CastorMarshaller {
      protected void customizeMarshaller(Marshaller marshaller)

      { super.customizeMarshaller(marshaller); marshaller.setMarshalAsDocument(true); }

      }

      See this forum thread for additional details: http://forum.springframework.org/showthread.php?p=181732&posted=1#post181732

        Activity

          People

          • Assignee:
            arjen.poutsma Arjen Poutsma
            Reporter:
            jim Jim Cummings
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: