JAX-WS开发web服务

JAX-WS 2.0( Java api for xml-based web service)是JAX-RPC 1.1的后续版本,是一个新的web service协议栈,是一个完全基于标准的实现。它主要用于简化使用java构造web服务和web服务客户端的工作。

JAX-WS 2.0 是java 1.5平台的一个重要组成部分。

第一部分发布web服务
1.编写服务类
JAX-WS 的服务端类可以是任意的POJO类,需要用WebService标注,需要暴漏的方法用@WebMethod标注,例如:
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class HAHA {

@WebMethod
public String getHHH(String s){
return "haha:"+s;
}

}
2.导出服务端的辅助类
光有服务类是不能发布为web服务的,需要使用wsgen工具导出辅助类,例如:

wsgen -cp bin com.zte.HelloWorld -s src -d bin -r wsdl
wsgen用于生成服务端的辅助类,有了这些辅助类才能够将POJO发布为web服务。
-cp 用于指明classpath,即从哪个地方去找pojo类;
-s 表示生成的源文件放到哪个地方;
-d 表示生成的class文件放到哪个地方;
-r 表示生成的wsdl文件和xsd文件存放到哪个地方;

3.使用Endpoint发布方法:
import javax.xml.ws.Endpoint;

public class HAHAServer {
public static void main(String args[]){
Endpoint.publish("http://localhost:9081/hello", new HAHA());
  //第一个参数为服务的地址,第二个参数为要发布为服务的类实例。服务的名称通常是类名+Service
}
}
要想在IE中访问该wsdl,必须在地址后面加上?wsdl,例如:http://localhost:9081/hello?wsdl



第二部分客户端调用web服务
1.先用wsimport工具,利用wsdl地址,生成客户端代码,例如:
wsimport  -d bin -s src http://localhost:9080/hello?wsdl
wsimport是根据wsdl的地址,自动生成客户端代码,然后就可以根据这些代码编写测试类,访问web服务端了。
-d 指明用于存储生成的class文件;
-s 指明用于存储生成的java文件;

2.编写client类,对服务端进行测试,例如:
public class HelloClient {

public static void main(String args[]){
HelloWorld h=new HelloWorldService().getHelloWorldPort();
System.out.println(h.sayHelloWorld());
//生成HelloWorldService类,用于连接web服务端,可以通过getHelloWorldPort方法获取HelloWorld对象
}

}

你可能感兴趣的:(jax-ws)