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
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: SM-469
URL: https://issues.apache.org/activemq/browse/SM-469
Project: ServiceMix
Type: Bug
Components: servicemix-core, servicemix-jms
Versions: 3.0-M1
Reporter: Michael Studman
Attachments: xbean.xml
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
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira