第一步: 创建一个接口
package test;
import javax.jws.WebService;
@WebService
public interface IHelloWorld {
public String sayHello(String name);
}
第二步:创建接口的实现类
package test;
import javax.jws.WebService;
@WebService
public class HelloWorldImpl implements IHelloWorld {
public String sayHello(String name) {
try{
Thread.sleep(1000);
}catch(Exception ex) {
}
System.out.println("sayHello is called by " + name);
return "Hello " + name;
}
}
第三步:创建服务器端
package server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import test.HelloWorldImpl;
public class Server {
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloWorldImpl.class);
factory.setAddress("http://localhost:8888/HelloWorld");
factory.create();
}
}
第四步 创建客户端 Polling方式
package client;
import java.io.StringReader;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Response;
import javax.xml.ws.Service;
import javax.xml.ws.Service.Mode;
import org.xml.sax.InputSource;
public class AsyncPollingClient {
private static String payload =
"<ns1:sayHello xmlns:ns1='http://test/'>" +
" <arg0>Test</arg0>" +
"</ns1:sayHello>";
public static void main(String[] args) throws Exception {
QName serviceName = new QName("http://test/", "HelloWorldImplService");
Service service = Service.create(new URL("http://localhost:8888/HelloWorld?wsdl"), serviceName);
QName portName = new QName("http://test/", "HelloWorldImplPort");
Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Mode.PAYLOAD);
Source msg = new SAXSource(new InputSource(new StringReader(payload)));
Response<Source> responseSource = dispatch.invokeAsync(msg);
System.out.println("Sleep...");
Thread.sleep(1000);
System.out.println("Wake up...");
Source response = responseSource.get();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(response, new StreamResult(System.out));
}
}
第五步:创建客户端 CallBack方式
package client;
import java.io.StringReader;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Response;
import javax.xml.ws.Service;
import javax.xml.ws.Service.Mode;
import org.xml.sax.InputSource;
public class AsyncCallBackClient {
private static String payload =
"<ns1:sayHello xmlns:ns1='http://test/'>" +
" <arg0>Test</arg0>" +
"</ns1:sayHello>";
public static class SimpleAsyncHandler implements AsyncHandler<Source> {
public void handleResponse(Response<Source> responseSource) {
try{
Source response = responseSource.get();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(response, new StreamResult(System.out));
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
QName serviceName = new QName("http://test/", "HelloWorldImplService");
Service service = Service.create(new URL("http://localhost:8888/HelloWorld?wsdl"), serviceName);
QName portName = new QName("http://test/", "HelloWorldImplPort");
final Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Mode.PAYLOAD);
final Source msg = new SAXSource(new InputSource(new StringReader(payload)));
final AsyncHandler<Source> handler = new SimpleAsyncHandler();
new Thread(){
public void run(){
dispatch.invokeAsync(msg, handler);
}
}.start();
System.out.println("I'm doing other..");
}
}
分享到:
相关推荐
WebService 异步调用可以提高系统的响应速度和效率,特别是在需要处理大量数据或需要长时间处理的操作时。 在本例中,我们将展示如何使用 C# 类库创建一个简单的 WebService,并实现异步调用。我们将创建一个名为 ...
WebService 异步调用是指在客户端和服务器端之间进行异步数据交换的过程。异步调用可以提高系统的性能和可扩展性,实现高效的数据交换。下面是 WebService 异步调用的实现方法总结: 一、异步调用方式 WebService ...
### 用WebService进行异步通信 #### 一、引言 在现代软件开发中,Web服务(WebService)作为实现系统间交互的一种重要手段,在企业级应用和服务端开发中扮演着核心角色。然而,在某些场景下,例如智能客户端应用中...
3. **[A359]WebService在.NET中的实战应用四 WebService异步处理续.exe**:这是一个可执行文件,可能是演示或教学程序,展示了如何在.NET中实现WebService的异步处理,以提高应用程序的响应速度和并发性能。...
4. **异步处理**:在“[A357]WebService在.NET中的实战应用三 WebService异步处理.exe”文件中,讲述了如何实现WebService的异步调用。这在处理长时间运行的操作时特别有用,避免阻塞客户端。使用`[System.Web....
在这个"WebService同步异步调用示例代码.rar"压缩包中,我们很可能找到C#语言编写的源代码,这些代码演示了如何使用.NET框架来创建和消费WebService,特别是在同步和异步模式下进行调用的方法。 同步调用是最基础的...
当我们谈论“webservice8 异步调用webservice”时,这通常指的是在Axis2框架下,使用RPCServiceClient类的invokeNonBlocking方法来实现Web服务的异步调用。 传统的同步调用方式会导致客户端程序在等待服务响应期间...
"四 WebService异步处理续.ppt"可能是关于异步调用WebService的教程或演示文稿。在.NET中,可以使用BeginInvoke和EndInvoke方法实现WebService调用的异步处理,以避免阻塞UI线程,提升用户体验。异步调用特别适用于...
本实例将重点讲解如何利用AJAX进行异步调用WebService,为用户提供无缝的交互体验。 一、AJAX基础 1. AJAX的核心是XMLHttpRequest对象,它提供了与服务器通信的能力,可以在后台与服务器进行数据交换。 2. AJAX通过...
本实例将详细介绍如何利用Ajax技术与WebService进行表格数据的异步获取和处理。 首先,让我们理解什么是Ajax。Ajax是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过JavaScript创建XMLHttpRequest...
可以使用AsyncTask、Handler、Thread/Runnable、ExecutorService等异步处理机制。本例中,可能是使用了AsyncTask或者自定义的线程池来进行异步调用。 封装调用Webservice的过程通常包括以下步骤: 1. **创建网络...
StAX则允许开发者以流式的方式处理XML,通过迭代器读取XML元素,同样可以实现异步处理。 在.NET框架中,可以利用XmlReader类进行异步解析,该类提供了ReadAsync方法,能够在不阻塞调用线程的情况下读取XML数据。...
本示例“异步调用WebService.zip”着重展示了如何在ASP.NET环境中实现异步调用Web服务,从而提高应用程序的响应速度和性能。 首先,让我们了解什么是异步调用。在传统的同步调用中,程序会等待一个操作完成后再执行...
异步,说到异步需要首先将以下同步。同步就是代码按照顺序执行,当前面的代码的请求没有正常返回结果的情况下,后面的代码是不能运行。而异步正好和这点不同,异步是代码运行后,不管当前的请求是否返回结果,后面的...
当使用了异步页功能时,如右图中,开始Thread1是为页面服务的,但当页面处理其它的事情(比如I/O或调用其它WebService) 时,Thread1被放回线程池, 此时Thread1可以为其它页面请求服务了. 当此页面执行完自己的操作回来后...
5. **WebService异步示意图.jpg** - 图片可能展示了WebService的异步调用机制。在.NET中,可以使用`BeginInvoke`和`EndInvoke`方法实现异步调用,以避免阻塞UI线程,提高用户体验。 6. **WebService在.NET中的应用...
在IT领域,异步编程是一种常见的优化性能的技术,特别是在处理耗时操作如网络通信时,如调用Web Service。Web Service是一种基于XML的接口,允许应用程序通过HTTP协议进行通信,实现跨平台的数据交换。本篇将详细...
例如,批量处理数据、缓存结果、使用异步调用以避免阻塞UI线程等。 总之,通过Delphi调用C#的Webservice返回Dataset是一种跨语言的数据交互方式,涉及到网络通信、数据序列化和反序列化等多个技术环节。熟练掌握...