I tested the document.importNode() change with our implementation and
everything seems to be OK (the SaajMarshalerTest unit tests all pass), so I
don't see any reason to not commit this change, but I'm not a committer
(only someone who has been dealing with this namespace fun for a month).
Have you opened a Jira issue for this change at jira.logicblaze.com? 

regards,
/jonathan

> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] Behalf Of Simon Èarni
> Sent: Friday, January 13, 2006 12:07 PM
> To: [email protected]
> Subject: [servicemix-user] RE: Re: Re: Exception in SaajMarshaler...
> 
> 
> Jonathan,
> 
> I updated my source from svn, executed  maven eclipse using 
> maven1 (earlier 
> I was using maven2) and the problem with namespace seems to 
> be solved. But 
> the issue regarding
> SaajMarshaller.createSOAP remains. I need to have 
> document.importNode(node,true) instead of node.cloneNode(true).
> Cheers,
> Simon
> 
> "Simon Carni" <[EMAIL PROTECTED]> wrote in message 
> news:[EMAIL PROTECTED]
> > Hi Jonathan,
> > First of all thank you for your reply!
> >
> > I'll put my comments inline...
> >>...
> >> What is the revision number of the SaajMarshaler you are 
> working with?
> >>...
> > The revision number of SaajMarshaller is same as yours - 367116.
> >
> > ...
> >>If  you run ServiceMix with log4j set to DEBUG, can you 
> tell if the output 
> >>of
> >> SaajMarshaler.toNMS and SaajMarshaler.createSOAP are 
> correct? Have you
> >> verified that the issue is not with the HttpSoapConnector?
> > ...
> >
> > Outputs from both, SaajMarshaller.createSOAP and toNMS are correct. 
> > SaajBinding returns correct message. Things go wrong after 
> the message is 
> > returned to HttpSoapConnector. Text bellow is printed right 
> before src is 
> > returned in invokeInOut method in HttpSoapConnector
> > (...
> > Source src = exchange.getOutMessage().getContent();
> >            exchange.setStatus(ExchangeStatus.DONE);
> >            channel.send(exchange);
> >            src = transformer.toDOMSource(src);
> >            System.out.println("Body is: " + 
> transformer.toString(src));
> >            return src;
> > ...
> > )
> > That's the output:
> > Body is: <?xml version="1.0" 
> encoding="UTF-8"?><ns1:serviceMethodResponse 
> > xmlns:ns1="http://example3.userguide.samples"; 
> > 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:encodingStyle="http://schemas.xmlsoap.org/soap/encodin
> g/"><serviceMethodReturn 
> > xsi:type="xsd:string">test 
> > me</serviceMethodReturn></ns1:serviceMethodResponse>
> >
> > As you can see the namespace attribute is there. Following 
> line in output 
> > is this:
> > DEBUG - HandlerPipeline.invoke(95) | Invoking handler 
> > org.codehaus.xfire.soap.handler.SoapSerializerHandler in 
> phase post-invoke
> > I guess that's the spot where something goes wrong.
> >
> >> ....". Does this namespace issue arise once you replace
> >> node.cloneNode(true) with document.importNode(node,true)? 
> The change to
> >> cloneNode() was implemented precisely to avoid the 
> namespace issue that 
> >> you
> >> are describing.
> >
> > Yes  the issue arised after the change . Before the change 
> the message 
> > wasn't even sent  from SaajBinding to WS. Now the things go wrong 
> > somewhere on the "return path" of the message.
> > Looking at log we can say it's somewhere in HttpSoapConnector 
> > (org.codehaus.xfire.soap.handler.SoapSerializerHandler more 
> precisely)
> >
> > p.s. : I've tested  
> document.appendChild(node.cloneNode(true)); and in the 
> > case that parent document of cloned node is not the same as 
> the document 
> > we were going to append it to, it allways throws Exception.
> >
> > Cheers,
> > Simon
> >
> >
> >
> >
> >
> > <[EMAIL PROTECTED]> wrote in message 
> > 
> news:[EMAIL PROTECTED]
> northamerica.cexp.com...
> >> Simon,
> >>
> >> What is the revision number of the SaajMarshaler you are 
> working with? I 
> >> am
> >> using the same xfire-all version, and revision 367116 with 
> Systinet 
> >> clients
> >> and services, and am not experiencing any of the problems 
> that you seem 
> >> to
> >> be encountering with Axis. In fact, the changes to the 
> SaajMarshaler were
> >> put in place to fix the namespace problem that you are 
> describing below. 
> >> If
> >> you run ServiceMix with log4j set to DEBUG, can you tell 
> if the output of
> >> SaajMarshaler.toNMS and SaajMarshaler.createSOAP are 
> correct? Have you
> >> verified that the issue is not with the HttpSoapConnector? As an
> >> alternative, have you tried substituting your SOAP/XML 
> data in to the
> >> SaajMarshalerTest?
> >>
> >> To clarify your situation a bit, in your note you say "Now there's 
> >> another
> >> issue:...". Does this namespace issue arise once you replace
> >> node.cloneNode(true) with document.importNode(node,true)? 
> The change to
> >> cloneNode() was implemented precisely to avoid the 
> namespace issue that 
> >> you
> >> are describing.
> >>
> >> regards,
> >> /jonathan
> >>
> >>> -----Original Message-----
> >>> From: news [mailto:[EMAIL PROTECTED] 
> >>> Behalf Of Simon Carni
> >>> Sent: Thursday, January 12, 2006 10:39 PM
> >>> To: [email protected]
> >>> Subject: [servicemix-user] Re: Re: Exception in SaajMarshaler...
> >>>
> >>>
> >>> Hi Jonathan,
> >>>
> >>> The build is 3.0-SNAPSHOT and the xfire-all-1.0-20060106.jar.
> >>> I'm running it
> >>> on java 1.5.0-b64.
> >>> Thanx,
> >>> Simon
> >>>
> >>> <[EMAIL PROTECTED]> wrote in message
> >>> news:[EMAIL PROTECTED]
> >>> northamerica.cexp.com...
> >>> Which version of the xfire-all jar are you running with?
> >>> Also, which build
> >>> of the various components are you running off of?
> >>>
> >>> > -----Original Message-----
> >>> > From: news [mailto:[EMAIL PROTECTED] 
> >>> > Behalf
> >>> > Of Simon Carni
> >>> > Sent: Thursday, January 12, 2006 4:01 PM
> >>> > To: [email protected]
> >>> > Subject: [servicemix-user] Re: Exception in SaajMarshaler...
> >>> >
> >>> >
> >>> > 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:service
> >>> > MethodResponse></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:Bo
> >>> > dy><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";><service
> >>> > MethodReturn
> >>> > xsi:type="xsd:string">simon</serviceMethodReturn></ns1:service
> >>> > MethodResponse></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