Hi all,
Yes that matches also to what I've seen right now from further analysing the
SOAP-messages sent.
I'll post the results here, just for the case it might be of help while
analyzing and fixing the problem:
That's the return fault-soap-message from Axis2/C:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>
http://www.w3.org/2005/08/addressing/fault
</wsa:Action>
<wsa:MessageID>
3b31d7c1-69ae-476e-89e1-daf4b555b744
</wsa:MessageID>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault>
<Code>
<Value>soapenv:Sender</Value>
<Subcode>
<Value>wsa:InvalidAddressingHeader</Value>
</Subcode>
<Subcode>
<Value>wsa:InvalidCardinality</Value>
</Subcode>
</Code>
<Reason>
<Text xml:lang="en">
A header representing a Message
Addressing Property
is not valid and the message cannot
be processed
</Text>
</Reason>
<Detail>
<wsa:ProblemHeaderQName
xmlns:wsa="
http://www.w3.org/2005/08/addressing">
wsa:Action
</wsa:ProblemHeaderQName>
</Detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
After the following modification of the SOAP-Message sent to Axis2/C the
call went successfully (Eclipse Web Service Explorer did a good job allowing
manual modification of soap-messages sent :-)):
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:q0="http://sample/helloworld"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing
">
http://localhost:9090/axis2/services/HelloWorldComponent/HelloWorldService
</wsa:Action>
</soapenv:Header>
<soapenv:Body>
<q0:getGreetings>
<q0:param1>ghdfzh</q0:param1>
</q0:getGreetings>
</soapenv:Body>
</soapenv:Envelope>
The error is fixed already (message schema is satisfied) if I modify the
header to:
...
<soapenv:Header>
<wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://localhost:9090/axis2/services/HelloWorldComponent/HelloWorldService
</wsa:To>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://localhost:9090/axis2/services/HelloWorldComponent/HelloWorldService
</wsa:Action>
</soapenv:Header>
...
Although this leads to another error occuring later in the process since
this change seems not to make sense to SCA-ws-binding module in Axis2/C.
Thank you guys for your support! I appreciate that a lot!
Philipp
-----Ursprüngliche Nachricht-----
Von: Simon Nash [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 14. November 2007 16:35
An: [email protected]
Betreff: Re: SOAPProcessingException after update from SCA 0.99 to 1.0
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]