package com.datastruct.sort;
import java.io.IOException;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.rpc.client.RPCServiceClient;
import junit.framework.TestCase;
public class RPCAsyncClient extends TestCase {
String url = "http://xxxxx:9080/CrmToRps/services/RPSService";
String method = "RPSOrder";
String requestXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><ContractRoot><TcpCont><BusCode>BUS21001</BusCode><ServiceCode>SVC21001</ServiceCode><ServiceContractVer>SVC2100120100603</ServiceContractVer><ActionCode>0</ActionCode><TransactionID>1111111245201006031000000014</TransactionID><ServiceLevel>1</ServiceLevel><SrcOrgID>222222</SrcOrgID><SrcSysID>333333</SrcSysID><SrcSysSign></SrcSysSign><DstOrgID>600204</DstOrgID><DstSysID></DstSysID><ReqTime>20100603095739</ReqTime><Request><ReqType></ReqType><ReqCode></ReqCode><ReqDesc></ReqDesc></Request></TcpCont><SvcCont><MDN>18901131234</MDN><CardType>00006</CardType><FromAreaNum></FromAreaNum><ToAreanum></ToAreanum><STAFF_ID>132456</STAFF_ID><STAFF_NAME></STAFF_NAME><CHANNEL_ID>aaaa</CHANNEL_ID><CHANNEL_NAME></CHANNEL_NAME></SvcCont></ContractRoot>";
public void test() throws IOException{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(url);
options.setTo(targetEPR);
Object[] opAddEntryArgs = new Object[]{requestXML};
QName opAddEntry = new QName("http://service", method);
serviceClient.invokeNonBlocking(opAddEntry, opAddEntryArgs,
new org.apache.axis2.client.async.AxisCallback()
{
public void onComplete()
{
System.out.println("onComplete");
}
public void onError(Exception arg0)
{
System.out.println("onError"+arg0.getMessage());
}
public void onFault(MessageContext arg0)
{
System.out.println("onFault");
}
public void onMessage(MessageContext mc)
{
// 输出返回值
System.out.println(mc.getEnvelope().getFirstElement()
.getFirstElement().getFirstElement().getText());
}
});
System.out.println("异步调用!");
// 阻止程序退出
System.in.read();
}
}
分享到:
相关推荐
对于异步操作,.NET提供了`async/await`关键字,可以方便地编写非阻塞的异步代码。 一旦从Web服务获取到数据,ViewModel会更新自身的属性,这些属性通常标记为`INotifyPropertyChanged`接口的实现,以便View能监听...
- Axis2支持异步调用模式,允许客户端以非阻塞方式调用Web服务,提高系统性能。 **Axis2的Module模块** - Axis2的Module机制允许扩展服务功能,例如添加安全、事务管理等特性。 **使用SoapMonitar监控** - 通过...
使用`BeginXXX`和`EndXXX`方法组合,可以实现非阻塞调用。例如: ```csharp client.BeginMyServiceMethod("参数", OnMyServiceMethodCompleted, client); ... private static void OnMyServiceMethodCompleted...
调用过程通常是同步的,但也可以通过异步模式进行非阻塞调用。 总的来说,通过WSDL2Java工具,开发者可以快速地接入和使用Web服务,大大简化了跨平台、跨语言的应用程序集成工作。理解并熟练掌握这一工具的使用,...
8. **异步调用WebService**:Axis2支持异步调用模式,允许客户端以非阻塞的方式发起请求,提高系统的并发处理能力。 9. **编写Axis2模块(Module)**:开发者可以创建自定义的Axis2模块来扩展其功能,满足特定需求。 ...
Axis2是下一代SOAP引擎,提供AXIOM对象模型、多种消息交换模式、阻塞和非阻塞API,以及对Web服务寻址(WS-Addressing)的支持,为构建和部署Web Service提供了便利。 总之,Web Service是实现跨系统通信和数据交换...
由于Web服务调用通常是跨越互联网的远程操作,这种非阻塞的异步调用方法对于提高应用性能和用户体验至关重要。 **异步计算与Future和Callback** 在JAX-WS 2.0中,异步调用基于JDK 5.0的并发编程支持,特别是`java....
- **阻塞与非阻塞**:Axis2 支持阻塞式和非阻塞式的客户端 API 接口,开发者可以根据实际情况选择适合的应用方式。 **4. 内置 Web 服务寻址 (WS-Addressing)** - **功能**:通过内置支持 WS-Addressing 规范,...
这种非阻塞的特性对于处理大量并发请求的系统尤为重要。 ### 一维(One-Way)调用 在给定的内容中,提到了“一维(One-Way)”的概念,这实际上是指在Web Service中的一种特殊调用方式。在一维调用中,客户端向...
Node.js的非阻塞I/O模型和事件驱动使其在处理高并发请求时表现出色,特别适合构建实时、数据密集型的网络应用。 Express是Node.js中最流行的Web应用框架,它简化了创建Web服务器的过程,提供了许多用于处理HTTP请求...
- 提供阻塞和非阻塞客户端API,增强服务调用的响应性。 - 内置Web服务寻址(WS-Addressing)支持,便于服务定位和通信。 - 灵活的数据绑定机制,支持AXIOM、XMLBeans、JiBX和JAXB 2.0等框架。 - 实现热部署,...
在异步调用中,通常采用非阻塞模式,可以使用`WSAAsyncSelect()`或`WSAEventSelect()`来监听Socket的读写和关闭事件。`WSAAsyncSelect()`基于消息机制,而`WSAEventSelect()`基于事件模型,两者都能实现非阻塞的...
在异步方式下,采用非阻塞方式实现比拟方便,在非阻塞方式下可使用 WSAAsyncSelect 模型和 WSAEventSelect 模型。无论使用阻塞方式或非阻塞方式编程,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的...
Envelope定义了消息的结构,Header包含非业务相关的元数据,而Body则包含了实际的业务数据。 1. **构建SOAP请求**: - 使用`ksoap2-android`库,这是一个广泛使用的Android SOAP客户端库。首先,将其添加到项目的...
异步方式下,采用非阻塞方式实现比较方便,可以使用 WSAAsyncSelect 模型和 WSAEventSelect 模型。 在使用 Socket 通讯时,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的数据包,在 Socket 通讯层将...