这篇文章是在我的上一篇文章:“ JAX-WS集成Web工程的Web Service的创建和发布简单入门(1)”的基础上的,也就是服务端的创建和发布。
转载:http://blog.youkuaiyun.com/leon709/article/details/7107996
客户端访问服务端需要向服务端发消息,有同步和异步两种:
同步调用:即一来一回的,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,成功了。
转载:http://blog.youkuaiyun.com/leon709/article/details/7107996