完整版见https://jadyer.github.io/2013/03/19/jaxws-and-wsimport-demo/
关于WebServices服务端的代码,详见http://blog.csdn.net/jadyer/article/details/8692035
这里的WebServices客户端,很简单,就一个java文件,用法见注释
package com.jadyer.client;
import com.jadyer.service.HelloService;
import com.jadyer.service.HelloServiceImplService;
/**
* 借助wsimport实现WebServices客户端
* @see wsimport是JDK6提供的工具,用于根据服务端发布的wsdl文件来生成客户端调用服务端时所需的*.java和*.class文件
* @see wsimport -d D:/Download/ -keep -verbose http://127.0.0.1:8888/myHelloService?wsdl
* @see '-d'--------指明生成的文件所存放的目录,注意该参数值对应的目录要存在,否则会报错
* @see '-keep'-----指明生成class文件的同时也生成对应的java文件,否则它只会生成class文件
* @see '-verbose'--指明生成文件时在控制台打印详细信息
* @see '-p'--------指明生成文件的所属包名,默认为按照wsdl文件的targetNamespace属性来生成包名
* @create Mar 16, 2013 10:49:18 PM
* @author 玄玉<http://blog.csdn/net/jadyer>
*/
public class ClientApp {
public static void main(String[] args) {
// URL url = new URL("http://127.0.0.1:8888/myHelloService?wsdl");
// QName qname = new QName("http://service.jadyer.com/", "HelloServiceImplService");
// Service service = Service.create(url, qname);
// HelloService hello = service.getPort(HelloService.class);
// System.out.println(hello.add(2, 6));
// System.out.println(hello.sayHello("Jadyer"));
//通过wsimport生成客户端调用服务端所需的java文件后
//即可以通过上面的方式来调用服务端,也可以通过下面的方式,但下面的方式要更省事一些
HelloServiceImplService helloServiceImpl = new HelloServiceImplService();
//也可以手工指定URL和QName
//URL url = new URL("http://127.0.0.1:8888/myHelloService?wsdl");
//QName qname = new QName("http://service.jadyer.com/", "HelloServiceImplService");
//HelloServiceImplService helloServiceImpl = new HelloServiceImplService(url, qname);
HelloService hello = helloServiceImpl.getHelloServiceImplPort();
System.out.println(hello.add(2, 6));
System.out.println(hello.sayHello("Jadyer"));
}
}
也可以把wsimport命令写到一个批处理中
@echo OFF
wsimport -d D:/Download/ -keep -verbose http://127.0.0.1:8888/myHelloService?wsdl