首先我们先建一个服务端的类
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
//表示这是一个web服务
@WebService
public class HelloWebService {
/**
* 2、至少保证一个可以对外公开的服务
* 对外提供服务无非就是提供个方法给外部调用,如果一个服务类没有方法,那发布它是没有意义的
*/
public String sayHello(@WebParam(name="name") String name){
return name;
}
public static void main(String[] args) {
/**
* Endpoint 服务端点类,利用该类来发布服务
* 参数1:服务的发布地址
* 参数2:服务的实现者
*
* publish发布成功后,会启动一个新线程来监听对 http://192.168.1.102:8080/hello 这个地址的请求
*/
Endpoint.publish("http://192.168.1.102:8080/hello", new HelloWebService());
//接着就可以查看wsdl了浏览器中打开:http://172.16.35.55:8080/hello?wsdl
//如果正常返回就说明发布成功 so easy!
System.out.println("服务已启动");
}
}
然后我们需要下载一个工具,我这个是apache-cxf-3.0.1这个版本的,我已经上传百度云http://pan.baidu.com/s/1bpKANPd
然后我们打开DOS命令,切记先运行上面那个类,只有服务端启动了,才能自动生成客户端所需要的类文件。
然后在浏览器输入wsimport -s d:\ http://192.168.1.102:8080/hello?wsdl有说明文件wsdl出来就是对的了,记得ip改为你电脑的ip
然后在DOS输入wsimport -s d:\ http://192.168.1.102:8080/hello?wsdl有如下图就是成功了
然后在D盘找到自动生成的类,把这些类复制进你的项目中,如果有的类有错误只需要删除即可,这是版本不同造成的,不影响使用
最后附上我的App.java代码
/**
*通过wsimport命令生成客户端代码调用Webservice服务
*
*命令格式 :
* wsimport -s d:\ http://192.168.1.109:8080/hello?wsdl
*
* s:表示要生成源码
* d:\ 生成源码到哪个路径
* 依据哪个wsdl文件来生成? http://192.168.1.109:8080/hello?wsdl
*
* wsimport -s d:\ -p com.luowg.ws.wheather WSDL地址
*/
public class App {
public static void main(String[] args) {
HelloWebServiceService hello = new HelloWebServiceService();
p2.HelloWebService he = hello.getHelloWebServicePort();
System.out.println(he.sayHello("杰宝宝"));
}
}
自此第一个webservice就到此,下一篇我们将介绍如何调用天气接口