Hi Raymond,
Not to throw a wrench into this, but ws/Axis2 callbacks derive from the
current approach of Axis2TargetInvoker handling the invocation on the
ServiceClient's OperationClient and of it being created by Axis2Reference. I
don't think CompositeReference needs to be involved here as it does not know
much about the particular binding at hand.
I have to admit that I have not analyzed quite all the details of interface
transformation, I was hoping that most of it could have been delegated to
databinding. In fact, I did not realize that this was in the state of flux
that it seems to be.
I have written an Axis2AsyncTargetInvoker (which extends
Axis2TargetInvoker), an Axis2ReferenceCallbackTargetInvoker (A2RCTI, that
performs a callback invocation upstream the Axis2Reference's inbound wire),
and an Axis2Callback (that is registered with the OperationClient and that
encapsulates A2RCTI), assuming the current approach was relatively stable,
in addition to making the necessary changes to Axis2Reference and
ConnectorImpl to support them.
Would it be possible to try to keep these from falling out of date, or worse
yet, being deprecated? Not sure how best to do this. I was trying to figure
out a way of testing them when I saw your note.
I do think that the basic architecture can remain as it is, still using the
binding's ReferenceExtension (in this case Axis2Reference), and without
requiring an outbound wire for it. Do you agree?
----- Original Message -----
From: "Raymond Feng" <[EMAIL PROTECTED]>
To: <tuscany-dev@ws.apache.org>
Sent: Wednesday, September 13, 2006 1:55 PM
Subject: Re: More databinding integration update
The good news is that I managed to get the helloworldwsclient working with
a workaround and some minor changes.
Workaround: Use the interface.wsdl instead of interface.java for the
binding.ws.
AxisReference: Set the databinding to OMElement for the
WSDLServiceContract
Axis2TargetInvoker: Make sure it goes with the pure OMElement path Rick
did before. There is a bug that it doesn't set the pureOMElemnt flag based
on the input data.
But please respond to my previous note on how we support java interfaces
in this case.
Thanks,
Raymond
----- Original Message -----
From: "Raymond Feng" <[EMAIL PROTECTED]>
To: <tuscany-dev@ws.apache.org>
Sent: Wednesday, September 13, 2006 10:20 AM
Subject: More databinding integration update
Hi,
1) A model for WSDL portType/operation and related XSD metadata to
represent unwrapped and wrapped WSDL operations
2) Input2InputTransformer and Out2OutTransformer to handle message
payload conversions accross IDL/databindings.
3) A databinding provider such AXIOM, DOM, JAXB orSDO can implement the
WrapperHandler to plug in the wrapping/unwrapping support for the given
databinding.
4) The echo-databinding sample has been updated to integrate the above
features and demonstrate the following interactions.
a) ComponentA/Interface1 (String) --> ComponentB/Interface2 (DOM) (A
databinding interceptor transforms String to DOM and vice versa)
b) ComponentB.reference with Echo java interface (DOM) --> Composite Echo
Reference (with wrapped WSDL and AXIOM databinding) (A databinding
interceptor transform DOM to wrapped AXIOM).
I started to look into the integration with Axis2 today. I ran into the
following issue now.
For a composite reference HelloWorldService,
<reference name="HelloWorldService">
<interface.java interface="helloworld.HelloWorldService"/>
<binding.ws
endpoint="http://helloworld#wsdl.endpoint(HelloWorldService/HelloWorldSoapPort)"
location="wsdl/helloworld.wsdl" />
</reference>
It's modeled as a java interface for the inbound wire (for example, a
component reference wired to this composite reference). But the target
invoker expects the WSDL interface from the binding.ws endpoint. To make
this happen with databinding transformation, I assume the BindingBuilder
has to create an outbound wire (to the Axis2 binding with the target
contract as the WSDL derived from the binding.ws). The TargetInvoker will
be added to the end of the outbound wire. Then the databinding
interceptor will kick in for the outbound wire to transform the
JavaServiceContract to the WSDLServiceContract so that the OMElement can
be directly consumed by the Axis2 TargetInvoker.
As a summary, the sequence will be:
a) component.reference (inteface 1) --> composite.reference (Java
interface 2) // It's happending now
b) composite.reference (Java interface 2) --> axis2 binding (WSDL
portType) // Yet to happen
Am I on the right track? Your comments will be appreciated.
Thanks,
Raymond
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]