JAX-WS集成Web工程的Web Service的客户端异步调用

本文介绍如何使用JAX-WS实现客户端和服务端间的异步调用,包括配置XML文件、生成辅助代码及编写测试类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这篇文章是在我的上一篇文章:“ JAX-WS集成Web工程的Web Service的创建和发布简单入门(1)”的基础上的,也就是服务端的创建和发布。

客户端访问服务端需要向服务端发消息,有同步和异步两种:

同步调用:即一来一回的,Client端request到Server端,Server端立刻回一个response。

异步调用:就是客户端调用一次服务端后,服务端处理事务并不是即时返回的,比如说传一个600MB文件给服务端,服务端在处理接收和解析文件时,客户端不会马上得到一个响应,它会等待一段时间,等服务器处理完后,再通知客户端“我处理完了”。

现在来完成客户端的异步调用。

1、为了简单,也只创建Java Project就可以了,比如我这里新建了一个叫Client的Java Project作为客户端。

2、在客户端工程根目录下创建一个xml配置文件,比如:binding.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
	wsdlLocation="http://10.225.112.86:8888/myWS2/HelloService?wsdl"
	xmlns="http://java.sun.com/xml/ns/jaxws">
	
	<bindings node="wsdl:definitions">
		<enableAsyncMapping>true</enableAsyncMapping>
	</bindings>
</bindings>

3、DOS进入客户端工程根目录,运行以下命令:

 表示客户端辅助的代码成功了,不过貌似好多啊,刷一下src目录就可以看到了。

4、编写一个Java类来测试异步调用:

package leon.test;

import javax.xml.ws.Response;

import leon.ws.Hello;
import leon.ws.HelloService;
import leon.ws.SayHelloResponse;

public class TestHelloAsyn {
	public static void main(String[] args) {
		HelloService service = new HelloService();
		Hello port = service.getHelloPort();
		Response<SayHelloResponse> resp = port.sayHelloAsync("LeonSU");
		while (!resp.isDone()) {
			System.out.println("not done. Hold on please...");
		}
		try {
			SayHelloResponse callNameResponse = resp.get();
			String message = callNameResponse.getReturn();
			System.out.println(message);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

客户端也创建好了。不过先不急着运行这个类哈,会报错的。看看服务端,服务端需要引入两个jar包:saaj-api.jar,saaj-impl.jar,如果没有的话赶紧引入吧。然后运行服务端。接着才可运行客户端的这个TestHelloAsyn.java:

OK,成功了。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值