On Nov 14, 2007 3:35 PM, Simon Nash <[EMAIL PROTECTED]> wrote: > Philipp, > Thanks for this information. There are two problems here. > > 1. The WS-Addressing To header should not be added unless callbacks > or conversations are in use. Your test does not use callbacks > or conversations, so this header should not be present. > > 2. The format of the WS-Addressing To header is wrong. This is a > known problem in Tuscany SCA Java 1.0 and 1.0.1: see TUSCANY-1849. > > Axis2/C is trying to parse the WS-Addressing header according to > the WS-Addressing spec. Because the header format is wrong, this > parsing fails and you get the error message.
> > > I don't think there is any workaround. We need to fix TUSCANY-1849 > urgently to resolve this problem. As part of this fix, we should also > avoid sending WS-Addressing headers unless they are needed for callbacks > or conversations. > > Simon > > Simon Laws wrote: > > > On Nov 14, 2007 12:26 PM, Philipp Konradi <[EMAIL PROTECTED]> wrote: > > > > > >>Hi, > >> > >>thank you guys very much for taking this issue on. > >>I've done tcpmonitoring as suggested and I noticed that the 1.0 runtime > >>was > >>sending additionally a Header with some Address element. > >> > >>Here the SOAP-Message send from 1.0 runtime: > >>POST /axis2/services/HelloWorldComponent/HelloWorldService HTTP/1.1 > >> Content-Type: text/xml; charset=UTF-8 > >> SOAPAction: "HelloWorldService#getGreetings" > >> User-Agent: Axis2 > >> Host: localhost:9090 > >> Content-Length: 508 > >><?xml version='1.0' encoding='UTF-8'?> > >><soapenv:Envelope > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > >> <soapenv:Header> > >> <To xmlns="http://www.w3.org/2005/08/addressing"> > >> <wsa:Address > >> xmlns:wsa=" > >>http://www.w3.org/2005/08/addressing"> > >> > >> > http://localhost:9090/axis2/services/HelloWorldComponent/HelloWorldService > >> </wsa:Address> > >> </To> > >> </soapenv:Header> > >> <soapenv:Body> > >> <_ns_:getGreetings xmlns:_ns_="http://sample/helloworld"> > >> <_ns_:param1>World</_ns_:param1> > >> </_ns_:getGreetings> > >> </soapenv:Body> > >></soapenv:Envelope> > >> > >> > >>Here the SOAP-Message send from 0.99 runtime: > >>POST /axis2/services/HelloWorldComponent/HelloWorldService HTTP/1.1 > >> Content-Type: text/xml; charset=UTF-8 > >> SOAPAction: "HelloWorldService#getGreetings" > >> User-Agent: Axis2 > >> Host: localhost:9090 > >> Content-Length: 271 > >><?xml version='1.0' encoding='UTF-8'?> > >><soapenv:Envelope > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > >> <soapenv:Body> > >> <_ns_:getGreetings xmlns:_ns_="http://sample/helloworld"> > >> <_ns_:param1>World</_ns_:param1> > >> </_ns_:getGreetings> > >> </soapenv:Body> > >></soapenv:Envelope> > >> > >> > >>Here the SOAP-Message send from Eclipse Web Service Explorer: > >>POST > >> > http://localhost:9090/axis2/services/HelloWorldComponent/HelloWorldService > >> HTTP/1.1 > >> Host: localhost:9090 > >> Content-Type: text/xml; charset=utf-8 > >> Content-Length: 337 > >> Accept: application/soap+xml, application/dime, > multipart/related, > >>text/* > >> User-Agent: IBM Web Services Explorer > >> Cache-Control: no-cache > >> Pragma: no-cache > >> SOAPAction: "HelloWorldService#getGreetings" > >> Connection: close > >><soapenv:Envelope > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmln > >> s:q0="http://sample/helloworld" > >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml > >> ns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > >> <soapenv:Body> > >> <q0:getGreetings> > >> <q0:param1>ghdfzh</q0:param1> > >> </q0:getGreetings> > >> </soapenv:Body> > >></soapenv:Envelope> > >> > >> > >>For me it looks like the soap-header is causing the problem. > >>What do you think? > >>Could ws-binding configured in a way not to add the header to the SOAP > >>message? > >> > >>Thanks, > >>Philipp > >> > >> > >> > >> > >> > >>-----Ursprüngliche Nachricht----- > >>Von: Simon Nash [mailto:[EMAIL PROTECTED] > >>Gesendet: Dienstag, 13. November 2007 12:32 > >>An: [email protected] > >>Betreff: Re: SOAPProcessingException after update from SCA 0.99 to 1.0 > >> > >>I can think of a few changes between 0.99 and 1.0 that could affect > >>interoperability, but I don't think any of these would come into > >>play for the scenario described here. > >> > >>For dynamically generated WSDL, a few changes were made to the > >>generation algorithm that affect methods with no arguments and/or > >>a void result. However, the helloworld-ws-reference sample uses > >>statically created WSDL, not dynamically generated WSDL. > >> > >>For callbacks and conversations, the wire protocol used to pass the > >>necessary information over Web services changed between 0.99 and 1.0. > >>However, the helloworld-ws-reference sample does not use callbacks > >>or conversations. > >> > >>This error seems to indicate that the Axis2/C service received a > >>SOAP request containing some unexpected XML data. Can you run with > >>a TCP monitor and post the SOAP messages that are being exchanged? > >> > >> Simon Nash > >> > >>Simon Laws wrote: > >> > >> > >>>On Nov 11, 2007 4:52 PM, Philipp Konradi <[EMAIL PROTECTED]> wrote: > >>> > >>> > >>> > >>>>Hi all, > >>>> > >>>>after upgrading from Tuscany SCA Java v0.99 to 1.0 one of my sample > >>>>applications has broken. > >>>>The app is pretty simple: a Java SCA service calls a Native SCA > service > >>>>via > >>>>Web Services. > >>>>After version upgrade I'm getting a SOAPProcessingException saying > "Only > >>>>Characters are allowed here". > >>>> > >>>>Does somebody else experienced something similar? Any explanations > >> > >>what's > >> > >>>>the reason and how to fix/workaround here? > >>>> > >>>>Here some details to the app: > >>>>The Java SCA service is actually the helloworld-ws-reference sample. > >>>>The Native SCA service is a simple helloworld implementation in C++ > >>>>deployed > >>>>in Axis2/C. > >>>> > >>>>The call makes it actually to Axis2/C but then Axis2/C returns a SOAP > >>>>fault > >>>>message. > >>>> > >>>>Here the axis2c log: > >>>>.... > >>>>[Sun Nov 11 16:07:29 2007] [info] Starting HTTP server thread > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >>>>..\..\modules\core\transport\http\http_worker.c(206) Client HTTP > version > >>>>HTTP/1.1 > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >>>>..\..\axiom\src\soap\soap_builder.c(868) > >>>>Identified soap version is soap11 > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\engine.c(776) > >> > >>>>Invoking phase TransportIn > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\phase.c(358) > >> > >>>>Invoke the handler request_uri_based_dispatcher within the phase > >>>>TransportIn > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >>>>..\..\modules\core\engine\req_uri_disp.c(104) Checking for service > using > >>>>target endpoint address : http://127.0.0.1:9090/HelloWorldService > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\engine.c(776) > >> > >>>>Invoking phase PreDispatch > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\phase.c(358) > >> > >>>>Invoke the handler AddressingInHandler within the phase PreDispatch > >>>>[Sun Nov 11 16:12:34 2007] [info] Starting addressing in handler > >> > >>......... > >> > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >>>>..\..\axiom\src\soap\soap_fault_code.c(273) trying to set fault > subcode > >> > >>to > >> > >>>>fault code more than once > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\engine.c(776) > >> > >>>>Invoking phase MessageOut > >>>>[Sun Nov 11 16:12:34 2007] [debug] > >> > >>..\..\modules\core\engine\phase.c(358) > >> > >>>>Invoke the handler AddressingOutHandler within the phase MessageOut > >>>>[Sun Nov 11 16:12:34 2007] [info] Request served successfully > >>>> > >>>>Here the output on the Java side: > >>>>[java] Injected helloWorldService > >>>>[java] Called getGreetings > >>>>[java] Exception in thread "main" > >>>>org.apache.axiom.soap.SOAPProcessingException: Only Characters are > >> > >>allowed > >> > >>>>here > >>>>[java] at > >>>>org.apache.axiom.soap.impl.builder.SOAP11BuilderHelper.processText > >>>>(SOAP11BuilderHelper.java:151) > >>>>[java] at > >>>>org.apache.axiom.soap.impl.builder.SOAP11BuilderHelper.handleEvent > >>>>(SOAP11BuilderHelper.java:63) > >>>>[java] at > >>>>org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode( > >>>>StAXSOAPModelBuilder.java:344) > >>>>[java] at > >>>> > org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement( > >>>>StAXSOAPModelBuilder.java:187) > >>>>[java] at org.apache.axiom.om.impl.builder.StAXOMBuilder.next( > >>>>StAXOMBuilder.java:163) > >>>>[java] at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext( > >>>>OMElementImpl.java:552) > >>>>[java] at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild( > >>>>OMElementImpl.java:563) > >>>>[java] at > >>>>org.apache.axiom.om.impl.llom.OMElementImpl.getFirstChildWithName( > >>>>OMElementImpl.java:219) > >>>>[java] at > org.apache.axiom.soap.impl.llom.soap11.SOAP11FaultImpl.getCode > >> > >>( > >> > >>>>SOAP11FaultImpl.java:129) > >>>>[java] at org.apache.axis2.AxisFault.initializeValues(AxisFault.java > >> > >>:189) > >> > >>>>[java] at org.apache.axis2.AxisFault.<init>(AxisFault.java:183) > >>>>[java] at > org.apache.axis2.util.Utils.getInboundFaultFromMessageContext( > >>>>Utils.java:486) > >>>>[java] at > >>>>org.apache.axis2.description.OutInAxisOperationClient.handleResponse( > >>>>OutInAxisOperation.java:343) > >>>>[java] at org.apache.axis2.description.OutInAxisOperationClient.send( > >>>>OutInAxisOperation.java:389) > >>>>[java] at > >>>>org.apache.axis2.description.OutInAxisOperationClient.executeImpl( > >>>>OutInAxisOperation.java:211) > >>>>[java] at org.apache.axis2.client.OperationClient.execute( > >>>>OperationClient.java:163) > >>>>[java] at > >>>> > org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invokeTarget > >> > >>( > >> > >>>>Axis2BindingInvoker.java:102) > >>>>[java] at > >>>>org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invoke > >>>>(Axis2BindingInvoker.java:77) > >>>>[java] at > >>>> > >>>> > >> > >> > org.apache.tuscany.sca.core.databinding.wire.DataTransformationInteceptor.invoke > >> > >>>>(DataTransformationInteceptor.java:73) > >>>>[java] at > >>>>org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke > >>>>(JDKInvocationHandler.java:233) > >>>>[java] at > >>>>org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke > >>>>(JDKInvocationHandler.java:130) > >>>>[java] at $Proxy4.getGreetings(Unknown Source) > >>>>[java] at helloworld.HelloWorldServiceComponent.getGreetings( > >>>>HelloWorldServiceComponent.java:30) > >>>>[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >>>>[java] at sun.reflect.NativeMethodAccessorImpl.invoke( > >>>>NativeMethodAccessorImpl.java:39) > >>>>[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke( > >>>>DelegatingMethodAccessorImpl.java:25) > >>>>[java] at java.lang.reflect.Method.invoke(Method.java:585) > >>>>[java] at > >>>> > >>>> > >> > >> > org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke > >> > >>>>(JavaImplementationInvoker.java:105) > >>>>[java] at > >>>> > >> > >> > org.apache.tuscany.sca.core.databinding.wire.PassByValueInteceptor.invoke( > >> > >>>>PassByValueInteceptor.java:49) > >>>>[java] at > >>>>org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke > >>>>(JDKInvocationHandler.java:233) > >>>>[java] at > >>>>org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke > >>>>(JDKInvocationHandler.java:130) > >>>>[java] at $Proxy4.getGreetings(Unknown Source) > >>>>[java] at helloworld.HelloWorldClient.main(HelloWorldClient.java:33) > >>>>[java] Java Result: 1 > >>>> > >>>>Versions used: > >>>>Axis2/C: v0.96. > >>>>SCA/SDO native: 1.0 Milestone Release 3. > >>>> > >>>>The app is working fine with 0.99. Also invoking the web service > (native > >>>>service) via Eclipse's Web Service Explorer works without any > problems. > >> > >>So > >> > >>>>I > >>>>think the origin of the problem has something to do with 1.0 runtime > and > >>>>web > >>>>service binding itself. > >>>> > >>>>I noticed that from 0.99 and 1.0 SCA updated to use axis2 1.3 instead > >>>>1.2and axiom > >>>>1.2.5 instead 1.2.4. > >>>>Maybe that has something to do with the problem. > >>>> > >>>>Any help is highly appreciated, > >>>> > >>>>Thanks, > >>>>Philipp > >>>> > >>> > >>>Hi Philipp > >>> > >>>I did a quick google for compatibility issues but didn't see anything > >>>obvious. I'll look a little closer tomorrow. Could you raise a JIRA > for > >>>this and attach the service you are using. We can give it a try and see > >> > >>if > >> > >>>the same error happens. > >>> > >>>Regards > >>> > >>>Simon > >>> > >> > >> > >> > >>--------------------------------------------------------------------- > >>To unsubscribe, e-mail: [EMAIL PROTECTED] > >>For additional commands, e-mail: [EMAIL PROTECTED] > >> > > > > Hi Philipp > > > > Could well be the ws-addressing headers causing problems. Looking at the > > code of the web service binding there doesn't appear to be a way of > turning > > them off currently. We might want to consider enabling ws address as > matter > > of policy in the future. > > > > Axis2C should be able to handle ws-addressing properly. What version of > > Axis2C are you on? Looking at the dependencies in the docs for native > SCA it > > specifies quite and old version. I don't know without trying whether > later > > versions will run with native SCA but would be worth a try. > > > > As part of the original log dump that you posted Axis reported > > > > ..\..\modules\core\engine\req_uri_disp.c(104) Checking for service using > > target endpoint address : http://127.0.0.1:9090/HelloWorldService > > > > Which is a little odd as it doesn't match the endpoint from either the > HTTP > > request or from the addressing header. Do you get the same logged output > > when it works? > > > > I think my strategy for looking at this would have to be to get it in > the > > debugger and find out what it is really complaining about. I can't tell > > what the error "org.apache.axiom.soap.SOAPProcessingException: Only > > Characters are allowed here" means other than it's reported by Java > Axiom > > when it's expecting a character in the input stream and doesn't get one. > Can > > you tell me what the error response SOAP message looks like? > > > > Regards > > > > Simon > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > Sounds like Simon knows what he's talking about. Saves a bit of debugging:-) Simon
