JIRA

  • Log In Access more options
    • Online Help
    • GreenHopper Help
    • Agile Answers
    • Use Agile By Default
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What’s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Agile Access more options (Alt+g)
  • Create Issue
  • Mule
  • MULE-4292

CXF webservice proxy changing namespace attributes

  • Agile Board
  • More Actions
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Won't Fix or Usage Issue
  • Affects Version/s: 2.2
  • Fix Version/s: None
  • Component/s: Modules: CXF
  • Labels:
    • 30CE_REVIEW
  • Environment:

    Appservers: Jetty, Websphere 6.1
    OS: Windows XP

  • User impact:
    High
  • Configuration:
    Hide

    <!-- NOTE: host, domain names have been changed from their actual values -->

    <service name="Eligibility">
    <inbound>

    <cxf:inbound-endpoint
    address="http://localhost:65080/services/Eligibility"
    proxy="true"
    wsdlLocation="Eligibility.wsdl"
    serviceName="Eligibility"
    synchronous="true">
    <property key="namespace" value="http://mydomain.com" />
    </cxf:inbound-endpoint>

    </inbound>

    <outbound>

    <pass-through-router>

    <cxf:outbound-endpoint
    address="http://remotehost.remotedomain.com/services/remote"
    transformer-refs="Transformers"
    proxy="true"
    synchronous="true" />

    </pass-through-router>

    </outbound>
    </service>

    Show
    <!-- NOTE: host, domain names have been changed from their actual values --> <service name="Eligibility"> <inbound> <cxf:inbound-endpoint address="http://localhost:65080/services/Eligibility" proxy="true" wsdlLocation="Eligibility.wsdl" serviceName="Eligibility" synchronous="true"> <property key="namespace" value="http://mydomain.com" /> </cxf:inbound-endpoint> </inbound> <outbound> <pass-through-router> <cxf:outbound-endpoint address="http://remotehost.remotedomain.com/services/remote" transformer-refs="Transformers" proxy="true" synchronous="true" /> </pass-through-router> </outbound> </service>
  • Log Output:
    Hide
    **** NOTE: This is the exception from the CLIENT, not Mule as Mule does not throw an exception in this case.



    Mar 31, 2009 7:31:22 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
    INFO: Interceptor has thrown exception, unwinding now
    org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:643)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:555)
    at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64)
    at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
    at $Proxy38.readConsumerCrossReferenceId(Unknown Source)
    at com.mydomain.ConsumerWSAdapter_Eligibility_Client.main(ConsumerWSAdapter_Eligibility_Client.java:59)
    Caused by: javax.xml.bind.UnmarshalException
     - with linked exception:
    [com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]]
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:337)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:628)
    ... 17 more
    Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]
    at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:630)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:473)
    at com.ctc.wstx.sr.NsAttributeCollector.resolveNamespaces(NsAttributeCollector.java:178)
    at com.ctc.wstx.sr.NsInputElementStack.resolveAndValidateElement(NsInputElementStack.java:374)
    at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2945)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
    at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:215)
    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)
    ... 19 more
    Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:196)
    at $Proxy38.readConsumerCrossReferenceId(Unknown Source)
    at com.mydomain.ConsumerWSAdapter_Eligibility_Client.main(ConsumerWSAdapter_Eligibility_Client.java:59)
    Caused by: org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:643)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:555)
    at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64)
    at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
    ... 2 more
    Caused by: javax.xml.bind.UnmarshalException
     - with linked exception:
    [com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]]
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:337)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:628)
    ... 17 more
    Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")
     at [row,col {unknown-source}]: [1,1601]
    at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:630)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:473)
    at com.ctc.wstx.sr.NsAttributeCollector.resolveNamespaces(NsAttributeCollector.java:178)
    at com.ctc.wstx.sr.NsInputElementStack.resolveAndValidateElement(NsInputElementStack.java:374)
    at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2945)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
    at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:215)
    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)
    ... 19 more
    Show
    **** NOTE: This is the exception from the CLIENT, not Mule as Mule does not throw an exception in this case. Mar 31, 2009 7:31:22 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601] at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:643) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:555) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178) at $Proxy38.readConsumerCrossReferenceId(Unknown Source) at com.mydomain.ConsumerWSAdapter_Eligibility_Client.main(ConsumerWSAdapter_Eligibility_Client.java:59) Caused by: javax.xml.bind.UnmarshalException  - with linked exception: [com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601]] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:337) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:628) ... 17 more Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:630) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:473) at com.ctc.wstx.sr.NsAttributeCollector.resolveNamespaces(NsAttributeCollector.java:178) at com.ctc.wstx.sr.NsInputElementStack.resolveAndValidateElement(NsInputElementStack.java:374) at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2945) at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019) at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:215) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358) ... 19 more Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:196) at $Proxy38.readConsumerCrossReferenceId(Unknown Source) at com.mydomain.ConsumerWSAdapter_Eligibility_Client.main(ConsumerWSAdapter_Eligibility_Client.java:59) Caused by: org.apache.cxf.interceptor.Fault: Unmarshalling Error: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601] at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:643) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:555) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178) ... 2 more Caused by: javax.xml.bind.UnmarshalException  - with linked exception: [com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601]] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:337) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:628) ... 17 more Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")  at [row,col {unknown-source}]: [1,1601] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:630) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:473) at com.ctc.wstx.sr.NsAttributeCollector.resolveNamespaces(NsAttributeCollector.java:178) at com.ctc.wstx.sr.NsInputElementStack.resolveAndValidateElement(NsInputElementStack.java:374) at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2945) at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019) at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:215) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358) ... 19 more
  • Similar Issues:
    None

Description

I am proxying a remote webservice using Mule/CXF. The XSI namespace in the response SOAP message from the remote webservice is getting changed from:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

to:

xmlns:xsi="xsi"

This results in the following error on the client side when calling the proxy:

Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "xsi" (for attribute "nil")
at [row,col {unknown-source}]: [1,1601]

I have been able to confirm that Mule/CXF is inserting the incorrect XSI namespace, not the remote web service. When I call the remote service directly using SoapUI the XSI namespace is correct.

It is of note that a similar problem seems to be occuring with Service Mix, so this may be a problem with CXF itself.

I have tried to change the namespace in the resulting message using an XSL stylesheet but have so far been unsuccessful.

Issue Links

is blocked by

New Feature - A new feature of the product, which has yet to be developed. MULE-4157 Support sending whole SOAP Envelope with CXF proxies

  • Major - Major loss of function.
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • Work Log
  • History
  • Activity
  • Transitions
  • Commits
  • Source
  • Builds
Hide
Permalink
Scott Rainaldo added a comment - 02/Apr/09 01:06 PM

I was able to work around this issue using the XSL stylesheet below as a response transformer on the <cxf:outbound-endpoint>.

The stylesheet essentially copies all of the elements without ANY attributes (including namespace attributes), and re-writes the <soap:Envelope> to ensure that the namespaces from the stylesheet are applied to it.

It's not ideal by any means, but it works.

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://mydomain.com">

<xsl:output omit-xml-declaration="yes" indent="yes" />

<!-- identity template without namespace nodes -->
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>

<!-- The lack of '@*' means attributes are stripped. -->
<xsl:template match="text()|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>

<!-- This will ensure that the Soap:Envelope element gets the namespaces from this stylesheet -->
<xsl:template match="soap:Envelope">
<soap:Envelope>
<xsl:apply-templates select="*" />
</soap:Envelope>
</xsl:template>

</xsl:stylesheet>

Show
Scott Rainaldo added a comment - 02/Apr/09 01:06 PM I was able to work around this issue using the XSL stylesheet below as a response transformer on the <cxf:outbound-endpoint>. The stylesheet essentially copies all of the elements without ANY attributes (including namespace attributes), and re-writes the <soap:Envelope> to ensure that the namespaces from the stylesheet are applied to it. It's not ideal by any means, but it works. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://mydomain.com"> <xsl:output omit-xml-declaration="yes" indent="yes" /> <!-- identity template without namespace nodes --> <xsl:template match="*"> <xsl:element name="{name()}"> <xsl:apply-templates select="@*|node()" /> </xsl:element> </xsl:template> <!-- The lack of '@*' means attributes are stripped. --> <xsl:template match="text()|comment()|processing-instruction()"> <xsl:copy> <xsl:apply-templates select="node()" /> </xsl:copy> </xsl:template> <!-- This will ensure that the Soap:Envelope element gets the namespaces from this stylesheet --> <xsl:template match="soap:Envelope"> <soap:Envelope> <xsl:apply-templates select="*" /> </soap:Envelope> </xsl:template> </xsl:stylesheet>
Hide
Permalink
Dan Diephouse added a comment - 06/Apr/09 11:59 AM

Can you please attach a copy of the request message that you're sending? Thanks!

Show
Dan Diephouse added a comment - 06/Apr/09 11:59 AM Can you please attach a copy of the request message that you're sending? Thanks!
Hide
Permalink
Dan Diephouse added a comment - 06/Apr/09 12:06 PM

Ahhhh, I see what is going on now. When your service sends a response, the xsi namespace is declared on the envelope. Then sine Mule only copies the body, it doesn't pick up that namespace, and you end up with broken xml infoset.

This is indeed a little thorny. This may tie into MULE-4157. I'm going to have to think about how to fix this.

Show
Dan Diephouse added a comment - 06/Apr/09 12:06 PM Ahhhh, I see what is going on now. When your service sends a response, the xsi namespace is declared on the envelope. Then sine Mule only copies the body, it doesn't pick up that namespace, and you end up with broken xml infoset. This is indeed a little thorny. This may tie into MULE-4157. I'm going to have to think about how to fix this.
Hide
Permalink
Scott Rainaldo added a comment - 07/Apr/09 03:16 PM

That is correct, and this does seem to be related to MULE-4157.

A limited solution would be to ensure that the namespaces in the resulting SOAP envelope are copied into the Mule return message. Something like a "propagateNamespaces" option on the outbound endpoint (or this could be the default behavior).

An alternative would be to pass on the entire SOAP message as proposed in 4157.

Show
Scott Rainaldo added a comment - 07/Apr/09 03:16 PM That is correct, and this does seem to be related to MULE-4157. A limited solution would be to ensure that the namespaces in the resulting SOAP envelope are copied into the Mule return message. Something like a "propagateNamespaces" option on the outbound endpoint (or this could be the default behavior). An alternative would be to pass on the entire SOAP message as proposed in 4157.
Hide
Permalink
Dan Diephouse added a comment - 07/Apr/09 03:29 PM

I think you might be right on the prorogation idea. I kept thinking about repairing namespaces, but clearly prorogation is a bit simpler. The problem is that as far as I can see, CXF has no way to pull out these namespace declarations.

Which leads me back to MULE-4157. We really need to find a proper way to propagate the soap body/headers without causing severe performance degradation. (i.e. we can't revert to caching a whole DOM tree)

Show
Dan Diephouse added a comment - 07/Apr/09 03:29 PM I think you might be right on the prorogation idea. I kept thinking about repairing namespaces, but clearly prorogation is a bit simpler. The problem is that as far as I can see, CXF has no way to pull out these namespace declarations. Which leads me back to MULE-4157. We really need to find a proper way to propagate the soap body/headers without causing severe performance degradation. (i.e. we can't revert to caching a whole DOM tree)
Hide
Permalink
Scott Rainaldo added a comment - 01/May/09 12:01 PM

Is it possible to fix this properly now that MULE-4157 has been implemented?

Show
Scott Rainaldo added a comment - 01/May/09 12:01 PM Is it possible to fix this properly now that MULE-4157 has been implemented?
Hide
Permalink
Daniel Zapata added a comment - 15/Dec/10 06:42 PM

deferred

Show
Daniel Zapata added a comment - 15/Dec/10 06:42 PM deferred
Hide
Permalink
Ramiro Rinaudo added a comment - 13/May/11 01:46 PM

Moving open issues from 3.1.2 to 3.1.3

Show
Ramiro Rinaudo added a comment - 13/May/11 01:46 PM Moving open issues from 3.1.2 to 3.1.3
Hide
Permalink
Evangelina Martinez Ruiz Moreno added a comment - 06/Jul/12 05:31 PM

Closing issue since in Mule 3 you can set the payload type to envelope which will preserve entire message, including headers and not just the body.

If problem persists in Mule 3 please reopen and attach a test case.

Show
Evangelina Martinez Ruiz Moreno added a comment - 06/Jul/12 05:31 PM Closing issue since in Mule 3 you can set the payload type to envelope which will preserve entire message, including headers and not just the body. If problem persists in Mule 3 please reopen and attach a test case.

People

  • Assignee:
    Evangelina Martinez Ruiz Moreno
    Reporter:
    Scott Rainaldo
Vote (0)
Watch (0)

Dates

  • Created:
    31/Mar/09 08:22 PM
    Updated:
    06/Jul/12 05:31 PM
    Resolved:
    06/Jul/12 05:31 PM

Agile

  • View on Board
  • Atlassian JIRA (v5.0.7#734-sha1:8ad78a6)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for MuleForge. Try JIRA - bug tracking software for your team.