So easy Webservice 6.使用EndPoint发布webservice服务
创建第一个Web服务:
@WebService // 添加了此注解,代表是一个WebService public class HelloWorld { // 非 static final private 方法默认会发布 public String sayHi(String name) { return "hello" + name; } }
发布web服务:
public static void main(String[] args) { String address="http://127.0.0.1:9999/helloworld"; // 注册并且发布一个服务,arg0: 服务地址 , arg1:要发布的服务对象 Endpoint endPoint=Endpoint.publish(address,new HelloWorld()); // 可以停止服务,或者手动停止 //endPoint.stop(); }
获取发布web服务的信息
访问wsdl网址为: http://127.0.0.1:9999/helloworld?wsdl 通过wsimport生成Java代码: Wsimport -s . -p a.b.c http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
将生成的java文件拷贝到项目中,或者打包成jar,放入项目:
jar -cvf mobile.jar . // 把当前路径打包成jar文件, 包名为mobile.jar
调用第一个WebService服务
public static void main(String[] args) { HelloWorldService helloWorldService=new HelloWorldService(); HelloWorld helloWorld=helloWorldService.getHelloWorldPort(); System.out.println(helloWorld.sayHi("china")); }
结果:hello,china
注意事项:
- 在类上添加@WebService注解,代表发布一个WebService服务
- 通过EndPoint(端点服务)发布一个webService。Endpoint也是jdk提供的一个专门用于发布服务的类,它的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。它位于javax.xml.ws.*包中。
- Endpoint.publish(String address, Object implementor) 静态方法在给定地址处针对指定的实现者对象创建并发布端点
- 给类添加上@WebService注解后,类中所有的非静态方法都将会对外公布
- 如果希望某个方法不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开。
- 如果一个类上,被添加了@WebService注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。
- protected、private、final、static方法不能对外公开 代码如下:
-
@WebService // 添加了此注解,代表是一个WebService public class HelloWorld { // 非 static final private 方法默认会发布 public String sayHi(String name) { return "hello" + name; } @WebMethod(exclude=true) public void exclude(){ // 被注解排除的方法 } protected void protected1(){ //受保护的方法默认不发布 } private void private1(){ // 私有方法默认不发布 } public static void static1(){ // static 方法默认不发布 } public final void final1(){ // final 方法默认不发布 } }
逃避不一定躲得过,面对不一定最难过