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]

Reply via email to