Uploaded image for project: 'ServiceMix'
  1. ServiceMix
  2. SM-469

XMLStreamHelper / servicemix-jms won't transport XML with top element not in a namepsace, and has problems with top level default namespace not bound to a prefix

    XMLWordPrintableJSON

Details

    Description

      While using servicemix-jms, I've encountered several problems when creating a provider endpoint.

      It seems to boil down to: If I send this <xml-payload/> as the in XML I get:

      Caused by: javax.xml.stream.XMLStreamException: NamespaceURI cannot be null
      at com.sun.xml.stream.writers.XMLStreamWriterImpl.writeStartElement(XMLStreamWriterImpl.java:833)
      at org.apache.servicemix.jbi.jaxp.XMLStreamHelper.writeStartElement(XMLStreamHelper.java:122)
      at org.apache.servicemix.jbi.jaxp.XMLStreamHelper.writeStartElement(XMLStreamHelper.java:155)
      at org.apache.servicemix.jbi.jaxp.XMLStreamHelper.writeStartElementAndAttributes(XMLStreamHelper.java:160)
      at org.apache.servicemix.jbi.jaxp.XMLStreamHelper.copyOne(XMLStreamHelper.java:85)
      at org.apache.servicemix.jbi.jaxp.XMLStreamHelper.copy(XMLStreamHelper.java:71)
      at org.apache.servicemix.soap.marshalers.SoapWriter.writeContents(SoapWriter.java:196)
      at org.apache.servicemix.soap.marshalers.SoapWriter.writeSimpleMessage(SoapWriter.java:111)
      at org.apache.servicemix.soap.marshalers.SoapWriter.write(SoapWriter.java:80)
      at org.apache.servicemix.jms.multiplexing.MultiplexingProviderProcessor.process(MultiplexingProviderProcessor.java:177)
      at org.apache.servicemix.common.BaseLifeCycle.processExchange(BaseLifeCycle.java:374)
      at org.apache.servicemix.common.BaseLifeCycle$2.run(BaseLifeCycle.java:240)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:595)

      If I send <xml-payload xmlns="urn:whatever"/> my service gets <xml-payload xmlns="urn:whatever" xmlns="urn:whatever"/> which, of course, is not well formed.

      If I send <whatever:xml-payload xmlns:whatever="urn:whatever"/> everything works.

      Certainly the first problem looks to be in XMLStreamHelper where it calls the namespace overloaded version of XMLStreamWriterImpl.writeStartElement which requires the namespace to be non-null.

      I'm unsure of the source of the second problem.

      I've attached my xbean.xml so you know how I've set up the consumer / providers

      Attachments

        1. ASF.LICENSE.NOT.GRANTED--xbean.xml
          2 kB
          Michael Studman

        Activity

          People

            Unassigned Unassigned
            mstudman Michael Studman
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: