Hi Simon !

Could you please raise a jira for the importNode problem ?
Also, do you still have issues with namespaces ?

Cheers,
Guillaume Nodet

Simon Carni wrote:

Hi Guillaume,

I think I know where the problem is :

document.appendChild(node.cloneNode(true));
in method createSOAPMessage in SaajMarshaller throws A node is used in a different document than the one that created it exception.
The workaround is to replace this with
document.appendChild(document.importNode(node,true));
I had simillar issue on some other project...

Now there's another issue:
when the message is routed back to Axis client seems like xmlns attribute gets gets lost.
Here's the document returned to AxisClient when the WS is called directly:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Body><ns1:serviceMethodResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="http://example3.userguide.samples";><serviceMethodReturn xsi:type="xsd:string">simon</serviceMethodReturn></ns1:serviceMethodResponse></soapenv:Body></soapenv:Envelope>

and here's the document returned when using SM as a "broker":
<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soap:Body><ns1:serviceMethodResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><serviceMethodReturn xsi:type="xsd:string">simon</serviceMethodReturn></ns1:serviceMethodResponse></soap:Body></soap:Envelope>

You can see xmlns:ns1="http://example3.userguide.samples"; missing in second doc. As result I get org.xml.sax.SAXParseException: The prefix "ns1" for element "ns1:serviceMethodResponse" is not bound
at Axis client.
The attribute exists before org.codehaus.xfire.soap.handler.SoapSerializerHandler is invoked, so that could be the spot.

Maybe I just missed something...
Anyway thanx in advance
Cheers,
Simon


"Guillaume Nodet" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
Could you raise a jira, specifying this stacktrace and the exact classpath used.
The most important is the saaj implementation and dom implementation.

Cheers,
Guillaume Nodet

Simon Èarni wrote:

Hi,

While trying to execute following scenario on SM 3.0-SNAPSHOT;

Axis SOAP Client --> HttpSoapConnector --> SaajBinding --> SOAP WS,

I get exception:

DEBUG - DefaultEndpoint.handleException(76) | Fault occurred!
org.codehaus.xfire.fault.XFireFault: WRONG_DOCUMENT_ERR: A node is used in a dif
ferent document than the one that created it.
at org.apache.servicemix.components.http.HttpSoapInOutBinding.invokeInOu
t(HttpSoapInOutBinding.java:143)
at org.apache.servicemix.components.http.HttpSoapInOutBinding$InOutServi
ce.invokeInOut(HttpSoapInOutBinding.java:221)
      at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.xfire.service.binding.ObjectInvoker.invoke(ObjectInvoker
.java:87)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessa
ge(ServiceInvocationHandler.java:110)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(Se
rviceInvocationHandler.java:72)
at org.codehaus.xfire.handler.HandlerPipeline.invoke (HandlerPipeline.jav
a:97)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoin
t.java:58)
at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.
java:38)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFire
ServletController.java:278)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XF
ireServletController.java :144)
at org.apache.servicemix.component s.http.HttpSoapInOutBinding.process(Ht
tpSoapInOutBinding.java:94)
at org.apache.servicemix.components.http.BindingServlet.doPost(BindingSe
rvlet.java:75)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java :428
)
at org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java
:666)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
68)
      at org.mortbay.http.HttpContext.handle (HttpContext.java:1530)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
      at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service (HttpConnection.java:816) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
      at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
at org.mortbay.http.SocketListener.handleConnection (SocketListener.java:
244)
      at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
      at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: org.w3c.dom.DOMException : WRONG_DOCUMENT_ERR: A node is used in a dif
ferent document than the one that created it.
at org.apache.xerces.dom.ParentNode.internalInsertBefore(Unknown Source)

      at org.apache.xerces.dom.ParentNode.insertBefore(Unknown Source)
at org.apache.xerces.dom.CoreDocumentImpl.insertBefore(Unknown Source)
      at org.apache.xerces.dom.NodeImpl.appendChild(Unknown Source)
at org.apache.servicemix.components.saaj.SaajMarshaler.createSOAPMessage
(SaajMarshaler.java:140)
at org.apache.servicemix.components.saaj.SaajBinding.onMessageExc hange(S
aajBinding.java:88)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
d(DeliveryChannelImpl.java:587)
at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
w.java:179)
at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doSend(SedaFlow.java
:137)
at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.jav
a:121)
at org.apache.servicemix.jbi.nmr.Broker.sendExchangePacket (Broker.java:2
85)
at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBICont
ainer.java:586)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(Delive
ryChannelImpl.java :346)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
veryChannelImpl.java:420)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
veryChannelImpl.java :397)
at org.apache.servicemix.components.http.HttpSoapInOutBinding.invokeInOu
t(HttpSoapInOutBinding.java:132)
      ... 29 more
DEBUG - HandlerPipeline.invoke(95) | Invoking handler org.codehaus.xfire.soap.ha
ndler.FaultSoapSerializerHandler in phase post-invoke
DEBUG - HandlerPipeline.invoke(95) | Invoking handler org.codehaus.xfire.handler

...

Any ideas???











Reply via email to