使用JDK开发WebService客户端和服务端
WebService主要有两种开发手段
1
2.使用CXF开发
本文主要介绍使用JDK开发WebService的客户端和服务端。
一、服务端
1. 创建一个Java Project,命名为WS_Server
2. 编写接口
-
package com.ws.server; -
/** -
* 接口,定义对外暴露的方法 -
* @author Administrator -
* -
*/ -
public interface IWebServiceServer { -
String sayHello(String name); -
String saveInfo(String name, String password); -
}
3. 编写接口实现类
-
package com.ws.server; -
import javax.jws.WebMethod; -
import javax.jws.WebService; -
@WebService -
public class WebServiceServerImpl implements IWebServiceServer{ -
@WebMethod -
public String sayHello(String name) { -
System.out.println("hello,"+name); -
return "hello"; -
} -
@WebMethod -
public String saveInfo(String name, String password) { -
System.out.println("name:"+name+",password:"+password); -
return "save success"; -
} -
}
实现类用注解@WebService标识为一个WebService, @WebMethod标识WebService方法,仅支持在使用 @WebService 注释来注释的类上使用 @WebMethod 注释。
WebService的其他注释参考:http://blog.sina.com.cn/s/blog_551d2eea0101jwpv.html
4. 编写一个main方法对外发布WebService
-
package com.ws.server; -
import javax.xml.ws.Endpoint; -
public class WebServicePublish { -
public static void main(String[] args) { -
String address = "http://127.0.0.1/webService/server"; -
//Endpoint.publish -
Endpoint.publish(address, new WebServiceServerImpl()); -
} -
}
5. 访问
在浏览器中输入:http://127.0.0.1/webService/server?wsdl,可以看到以下内容则表示服务端发布成功。
二、客户端
1. 执行命令生成代码:wsimport -s E:\workspace\WS_Client\src -p com.ws.client -keep http://127.0.0.1/webService/server?wsdl
说明:
(1)wsimport 是java的一个命令,在bin目录下
(2)E:\workspace\WS_Client\src 为项目源码地址
(3)com.ws.client 将生成的客户端代码放到这里
(4)http://127.0.0.1/webService/server?wsdl 其中http://127.0.0.1/webService/server?wsdl是在服务器端发布的地址
2. 调用WebService接口
-
package com.ws.client; -
public class WebServiceClientTest { -
public static void main(String[] args) { -
//获取工厂 -
WebServiceServerImplService factory = new WebServiceServerImplService(); -
//根据工厂获取服务端WebService实现类 -
WebServiceServerImpl webServiceServerImpl = factory.getWebServiceServerImplPort(); -
webServiceServerImpl.sayHello("您好"); -
webServiceServerImpl.saveInfo("lhw", "123456"); -
} -
}
运行结果: