You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "W.Y. Ho" <ye...@yahoo.ca> on 2007/01/30 05:57:42 UTC
[AXIS2] client call operations (Sync vs. Async)
Hi,
I build my web services using Axis2 + XmlBeans (XML Data binding).
I used the "Code first approach" (Starting from a service source code) + Java2WSDL, using Axis2 Codegen Wizard (eclipse plugins)
Everything is working fine.
I'm thinking now to control the client call operations (Sync vs. Async).
Looking at the automatic generated stub class, I'm not sure which operations the stub is implementing.
I observed the following calls to the server.
org.apache.axis2.client.OperationClient calls execute(true).
How can I change this into non-blocking with callbacks?
Thanks,
wen
Below is the code snippet:
public TDTradeServicesResultDocument processTrade(MyXmlDocument param0)
throws java.rmi.RemoteException, org.tds.eqd.webServices.exception.ProcessTradeFaultException{
try{
org.apache.axis2.client.OperationClient _operationClient =
_serviceClient.createClient(_operations[0].getName());
_operationClient.getOptions().setAction("urn:processTrade");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
// create SOAP envelope with that payload
org.apache.axiom.soap.SOAPEnvelope env = null;
//Style is Doc.
env = toEnvelope(
getFactory(
_operationClient.getOptions().getSoapVersionURI()),
param0,
optimizeContent(new javax.xml.namespace.QName("","processTrade")
)
);
// adding SOAP headers
_serviceClient.addHeadersToEnvelope(env);
// create message context with that soap envelope
org.apache.axis2.context.MessageContext _messageContext =
new org.apache.axis2.context.MessageContext() ;
_messageContext.setEnvelope(env);
// add the message contxt to the operation client
_operationClient.addMessageContext(_messageContext);
//execute the operation client
_operationClient.execute(true);
org.apache.axis2.context.MessageContext _returnMessageContext =
_operationClient.getMessageContext(
org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
java.lang.Object object = fromOM(
_returnEnv.getBody().getFirstElement(),
TDTradeServicesResultDocument.class,
getEnvelopeNamespaces(_returnEnv)
);
_messageContext.getTransportOut().getSender().cleanup(_messageContext);
return (TDTradeServicesResultDocument)object;
} catch(org.apache.axis2.AxisFault f){
---------------------------------
Share your photos with the people who matter at Yahoo! Canada Photos
Re: [AXIS2] client call operations (Sync vs. Async)
Posted by Thilina Gunarathne <cs...@gmail.com>.
Hi,
Editing the generated stubs is not recommended... you can try code
generating giving the -a option to the wsdl2java.. It'll generate the
async code together with CallBacks...
Normally the async invocation methods of the operations are named as
start<operationname>..
~Thilina
On 1/30/07, W.Y. Ho <ye...@yahoo.ca> wrote:
> Hi,
>
> I build my web services using Axis2 + XmlBeans (XML Data binding).
> I used the "Code first approach" (Starting from a service source code) +
> Java2WSDL, using Axis2 Codegen Wizard (eclipse plugins)
> Everything is working fine.
> I'm thinking now to control the client call operations (Sync vs. Async).
> Looking at the automatic generated stub class, I'm not sure which operations
> the stub is implementing.
> I observed the following calls to the server.
>
> org.apache.axis2.client.OperationClient calls
> execute(true).
>
> How can I change this into non-blocking with callbacks?
>
> Thanks,
> wen
>
> Below is the code snippet:
>
> public TDTradeServicesResultDocument processTrade(MyXmlDocument param0)
> throws java.rmi.RemoteException,
> org.tds.eqd.webServices.exception.ProcessTradeFaultException{
> try{
> org.apache.axis2.client.OperationClient
> _operationClient =
>
> _serviceClient.createClient(_operations[0].getName());
>
> _operationClient.getOptions().setAction("urn:processTrade");
>
> _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
> // create SOAP envelope with that payload
> org.apache.axiom.soap.SOAPEnvelope env = null;
> //Style is Doc.
> env = toEnvelope(
> getFactory(
>
> _operationClient.getOptions().getSoapVersionURI()),
> param0,
> optimizeContent(new
> javax.xml.namespace.QName("","processTrade")
> )
> );
>
> // adding SOAP headers
> _serviceClient.addHeadersToEnvelope(env);
> // create message context with that soap envelope
> org.apache.axis2.context.MessageContext
> _messageContext =
> new
> org.apache.axis2.context.MessageContext() ;
> _messageContext.setEnvelope(env);
>
> // add the message contxt to the operation client
>
> _operationClient.addMessageContext(_messageContext);
>
> //execute the operation client
> _operationClient.execute(true);
>
> org.apache.axis2.context.MessageContext
> _returnMessageContext =
> _operationClient.getMessageContext(
>
> org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
> org.apache.axiom.soap.SOAPEnvelope _returnEnv =
> _returnMessageContext.getEnvelope();
>
> java.lang.Object object = fromOM(
> _returnEnv.getBody().getFirstElement(),
> TDTradeServicesResultDocument.class,
> getEnvelopeNamespaces(_returnEnv)
> );
>
> _messageContext.getTransportOut().getSender().cleanup(_messageContext);
>
> return (TDTradeServicesResultDocument)object;
> } catch(org.apache.axis2.AxisFault f){
>
>
>
> ________________________________
> Share your photos with the people who matter at Yahoo! Canada Photos
>
>
--
Thilina Gunarathne
WSO2, Inc.; http://www.wso2.com/
Home page: http://webservices.apache.org/~thilina/
Blog: http://thilinag.blogspot.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org