jax-ws百度说明:
JAX-WS规范是一组XML web services的
JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。
在 JAX-WS中,一个
远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
在
服务器端,用户只需要通过
Java语言定义远程调用所需要实现的接口
SEI(service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代
远程的服务)来实现对于远程服务器端的调用。
实例
创建服务接口
package com.activemq;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
* 服务端接口
*
*/
@WebService
public interface HelloWorld {
/**
* 启动相关的服务方法
* @param name
* @return
*/
@WebMethod
String sayHi(@WebParam(name = "name") String name);
}
创建接口实现类
package com.activemq;
import javax.jws.WebService;
/**
* 服务端实现
*
*/
@WebService(endpointInterface ="com.activemq.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String name) {
return "Hello " + name;
}
}
服务端发布
package com.activemq;
import javax.xml.ws.Endpoint;
public class JaxwsServer {
public static void main(String args[]) throws Exception {
//发布webservice
Endpoint.publish("http://localhost:8080/jaxws/services/HelloWorld", new HelloWorldImpl());
}
}
打开http://localhost:8080/jaxws/services/HelloWorld
打开http://localhost:8080/jaxws/services/HelloWorld?wsdl
发布成功
客户端调用
package com.activemq;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public final class JaxwsClient {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8080/jaxws/services/HelloWorld?wsdl");
// 第一个参数是服务的URI
// 第二个参数是在WSDL发布的服务名
QName qname = new QName("http://activemq.com/", "HelloWorldImplService");
// 创建服务
Service service = Service.create(url, qname);
// 提取端点接口,服务“端口”。
HelloWorld client = service.getPort(HelloWorld.class);
System.out.println(client.sayHi("HI"));
}
}
Hello HI