说明: 在JDK1.6中JAX-WS规范定义了如何发布一个webService服务。
JAX-WS是指Java Api for XML – WebService.
主要类有:
a)@WebService - 它是一个注解,用在类上指定将此类发布成一个webservice服务.
b)Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了
@WebService注解对象绑定到一个地址的端口上。
Endpoint是jdk提供的一个专门用于发布服务的类,它的publish方法接收两个参数,
一个是本地的服务地址,二是提供服务的类。它位于javax.xml.ws.*包中。
static Endpoint.publish(String address, Object implementor)
在给定地址处针对指定的实现者对象创建并发布端点。stop方法用于停止服务。
1)给类添加上@WebService注解后,类中所有的非静态方法都将会对外公布。不支持静态方法,final方法。
2)如果希望某个方法(非static,非final)不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开。
3)如果一个类上,被添加了@WebService注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。
4)服务类中不能没有方法
5)@WebMethod(exclude=true)屏蔽方法
HelloServer.java,发布一个服务,当用户调用时返回hello+用户名称 package com.snowalker.soap.server; import javax.jws.WebService; @WebService public class HelloServer {
public String sayHello(String name) {
return "hello " + name ;
}
}
注意
方法权限是publish
不能是final类型的
方法不能是静态的
服务类至少有一个方法
发布方法,通过EndPoint.publish(url, 服务实现类);
package com.snowalker.soap.server;
import javax.xml.ws.Endpoint;
public class ServerPublisher {
public static void main(String[] args) {
//发布helloServer
Endpoint.publish("http://127.0.0.1:8081/sayhello", new HelloServer());
}
}
编写客户端代码 import net.wuwenliang.ws.stub.HelloServer; import net.wuwenliang.ws.stub.HelloServerService; public class TestJdkServer {
public static void main(String[] args) {
//创建服务点访问集合
HelloServerService helloServerService = new HelloServerService();
//获得绑定类
HelloServer helloServer = helloServerService.getHelloServerPort();
//调用逻辑
String result = helloServer.sayHello("snowalker");
System.out.println(result);
}
}
hello snowalker