1.前提准备
jdk的开发环境必须为1.6以及以上的版本(1.6及以上版本的jdk包含了javax.jws包).
2.创建提供服务的接口以及服务接口的实现类
在发布webservice时,jvm必须要识别那些发布了那些服务,所以要对服务接口和服务接口实现类进行标识,就需要@WebService,@WebMethod两个注解。
2.1 服务接口必须加注解@WebService,要提供的服务方法必须加@WebMethod,例子如下:
@WebService
public interface IHelloWorld {
@WebMethod
String helloWorld(String name);
}
2.2 服务实现类
服务类必须加注解@WebService,例子如下:
@WebService
public class HelloWorldImp implements IHelloWorld {
public String helloWorld(String name) {
return "Hello:"+name;
}
}
3. 发布webService服务
3.1要发布webService服务时,可以用EndPoint类,这个类提供的静态的方法publish(String address,Object serviceObject),
当我们调用了EndPoint.publish发布了对象之后,那么服务端就会一直接受客户端的请求。
例子如下:
String url="http://localhost:8080/HelloworldService";
IHelloWorld service = new HelloWorldImp();
EndPoint.publish(url,serice);
3.2验证WebService是否发布成功,可以在浏览器里面输入:http://localhost:8080/HelloworldService?wsdl观察是否有响应,如果有那就发布成功了。
4 客户端访问
客户端是通过代理或者存根对象来访问服务对象的。客户端要想获取的代理或存根对象,可以有不同的方式,这里就用jdk的wsimport命令来生成一些代码,这些代码能够为我们提供服务的代理或存根对象。
4.1.打开cmd,cd 要生成代码的文件夹,运行wsimprot命令,这里要价格keep参数,例如:wsimport -keep http://localhost:8080/HelloworldService?wsdl
4.2.命令执行完后,把生成的代码拷贝到你的工程下。
4.3 在生成的代码中有一个类实现了javax.xml.ws.Service。这个类能够为我们提供一个服务端的代理对象。例子中的这个类为HelloWorldImpService.生成代理对象如下:
HelloWorldImpService service = new HelloWorldImpService();
HelloWorldImp helloWorld = service.getHelloWorldImpPort();
System.out.println(helloWorld.helloWorld("张三"));
/**
*Hello:张三
*/