`
VerRan
  • 浏览: 459729 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

WebService 非阻塞模式

阅读更多

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();
	}
}
 
分享到:
评论
1 楼 wanglf1207 2012-01-04  
就贴一个客户端代码,有什么用?

相关推荐

    MVVM WebService 查询

    对于异步操作,.NET提供了`async/await`关键字,可以方便地编写非阻塞的异步代码。 一旦从Web服务获取到数据,ViewModel会更新自身的属性,这些属性通常标记为`INotifyPropertyChanged`接口的实现,以便View能监听...

    axis2;WebService

    - Axis2支持异步调用模式,允许客户端以非阻塞方式调用Web服务,提高系统性能。 **Axis2的Module模块** - Axis2的Module机制允许扩展服务功能,例如添加安全、事务管理等特性。 **使用SoapMonitar监控** - 通过...

    add_Webservice_C#调用webservices_c#webservice_webservice_

    使用`BeginXXX`和`EndXXX`方法组合,可以实现非阻塞调用。例如: ```csharp client.BeginMyServiceMethod("参数", OnMyServiceMethodCompleted, client); ... private static void OnMyServiceMethodCompleted...

    webservice轻松获取服务端

    调用过程通常是同步的,但也可以通过异步模式进行非阻塞调用。 总的来说,通过WSDL2Java工具,开发者可以快速地接入和使用Web服务,大大简化了跨平台、跨语言的应用程序集成工作。理解并熟练掌握这一工具的使用,...

    Axis2(WebService)经典教程.docx

    8. **异步调用WebService**:Axis2支持异步调用模式,允许客户端以非阻塞的方式发起请求,提高系统的并发处理能力。 9. **编写Axis2模块(Module)**:开发者可以创建自定义的Axis2模块来扩展其功能,满足特定需求。 ...

    webservice

    Axis2是下一代SOAP引擎,提供AXIOM对象模型、多种消息交换模式、阻塞和非阻塞API,以及对Web服务寻址(WS-Addressing)的支持,为构建和部署Web Service提供了便利。 总之,Web Service是实现跨系统通信和数据交换...

    Asynchronous Web Service Invocation with JAX-WS 2.0

    由于Web服务调用通常是跨越互联网的远程操作,这种非阻塞的异步调用方法对于提高应用性能和用户体验至关重要。 **异步计算与Future和Callback** 在JAX-WS 2.0中,异步调用基于JDK 5.0的并发编程支持,特别是`java....

    axis2 webservice入门手册(JS,Java,PHP调用实例源码)www.sietoo.com出品

    - **阻塞与非阻塞**:Axis2 支持阻塞式和非阻塞式的客户端 API 接口,开发者可以根据实际情况选择适合的应用方式。 **4. 内置 Web 服务寻址 (WS-Addressing)** - **功能**:通过内置支持 WS-Addressing 规范,...

    通向架构师的道路(第十一天)之Axis2_Web_Service(二)

    在前一天的讲解中,我们了解了如何生成一个基于Axis2的WebService,以及四种不同的客户端调用方式:传统式、非阻塞式、双工模式和双工非阻塞。现在我们将深入到使用简单Java类型来定义WebService的方法。 1. **使用...

    在Web Service中的异步开发模式

    这种非阻塞的特性对于处理大量并发请求的系统尤为重要。 ### 一维(One-Way)调用 在给定的内容中,提到了“一维(One-Way)”的概念,这实际上是指在Web Service中的一种特殊调用方式。在一维调用中,客户端向...

    restful-webservice:具有NodeJs Express模块​​和REST架构的Web服务

    Node.js的非阻塞I/O模型和事件驱动使其在处理高并发请求时表现出色,特别适合构建实时、数据密集型的网络应用。 Express是Node.js中最流行的Web应用框架,它简化了创建Web服务器的过程,提供了许多用于处理HTTP请求...

    spring+axis2_xfire整合的webservice

    - 提供阻塞和非阻塞客户端API,增强服务调用的响应性。 - 内置Web服务寻址(WS-Addressing)支持,便于服务定位和通信。 - 灵活的数据绑定机制,支持AXIOM、XMLBeans、JiBX和JAXB 2.0等框架。 - 实现热部署,...

    软件系统之间的接口方式.docx

    在异步调用中,通常采用非阻塞模式,可以使用`WSAAsyncSelect()`或`WSAEventSelect()`来监听Socket的读写和关闭事件。`WSAAsyncSelect()`基于消息机制,而`WSAEventSelect()`基于事件模型,两者都能实现非阻塞的...

    软件系统之间的接口方式.pdf

    在异步方式下,采用非阻塞方式实现比拟方便,在非阻塞方式下可使用 WSAAsyncSelect 模型和 WSAEventSelect 模型。无论使用阻塞方式或非阻塞方式编程,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的...

    android请求webservice需要的soap工具封装

    Envelope定义了消息的结构,Header包含非业务相关的元数据,而Body则包含了实际的业务数据。 1. **构建SOAP请求**: - 使用`ksoap2-android`库,这是一个广泛使用的Android SOAP客户端库。首先,将其添加到项目的...

    软件系统之间的接口方式.doc

    异步方式下,采用非阻塞方式实现比较方便,可以使用 WSAAsyncSelect 模型和 WSAEventSelect 模型。 在使用 Socket 通讯时,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的数据包,在 Socket 通讯层将...

Global site tag (gtag.js) - Google Analytics