webservice 简介: Web Service 技术, 能使得运行在不同机器上的不同应用无须借助附加的, 专门的第三方软件或硬件, 就可相互交换数据或集成. 依据 Web Service 规范实施的应用之间, 无论它们所使用的语言, 平台或内部协议是什么, 都可以相互交换数据. Web Service 是自描述, 自包含的可用网络模块, 可以执行具体的业务功能. Web Service 也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术, 诸如标准通用标记语言下的子集 XML,HTTP.Web Service 减少了应用接口的花费. Web Service 为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制
一, WebService 生成
1. 在 eclipse 或 myclipse 新建一个 Web 项目, 并新建一个 class 类, 用于发布;
2. 编写供客户端调用的方法, 即编译方法代码; 示例:
- import javax.jws.WebMethod;import javax.jws.WebService;import javax.xml.ws.Endpoint;
- /**
- Title: ServiceHello
- Description: 基于 jdk1.6 以上的 javax.jws 发布 webservice 接口
- @WebService - 它是一个注解, 用在类上指定将此类发布成一个 ws.
- Endpoint - 此类为端点服务类, 它的方法 publish 用于将一个已经添加了 @WebService 注解
- 对象绑定到一个地址的端口上.
- Version:1.0.0
- @author panchengming*/@WebService public class JwsServiceHello {
- /** 供客户端调用方法 该方法是非静态的, 会被发布
- @param name 传入参数
- @return String 返回结果
- */
- public String getValue(String name){
- return "欢迎你!"+name;
- }
- /**
- 方法上加 @WebMentod(exclude=true) 后, 此方法不被发布;
- @param name
- @return
- */
- @WebMethod(exclude=true)
- public String getHello(String name){
- return "你好!"+name;
- }
- /** 静态方法不会被发布
- @param name
- @return*/public static String getString(String name){return "再见!"+name;}
- // 通过 EndPoint(端点服务) 发布一个 WebServicepublic static void main(String[] args) {/ 参数: 1, 本地的服务地址; 2, 提供服务的类;/Endpoint.publish("http://192.168.1.105:8080/Service/ServiceHello", new JwsServiceHello());System.out.println("发布成功!");// 发布成功后 在浏览器输入 http://192.168.1.105:8080/Service/ServiceHello?wsdl }}3. 进行编译运行 (注: 失败检查 jdk 版本) 4. 将所设地址加上? wsdl 到浏览器上访问, 如出现 XML 格式代码, 则发布成功, 反之, 则否;
二, WebService 调用方法
生成代码方式一
1. 新建一个 class 类, 用于调用 webservice. 右键 src, 找到 Web Service Client, 并输入 wsdl 地址, 选择下载代码的路径;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl )
2. 将地址上的文件下载下来 (注意和发布 JDK 一致); 3. 写调用方法调用下载下来的 WebService 中的 java 类中的方法; 示例:
- import com.pcm.ws.jws.JwsServiceHello;import com.pcm.ws.jws.JwsServiceHelloService;
- /**
- Title: JwsClientHello
- Description: webService 客户端调用
- Version:1.0.0
- @author panchengming
- */
- public class JwsClientHello {
- public static void main(String[] args) {// 调用 webserviceJwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();String name=hello.getValue("panchengming");System.out.println(name);}} 生成代码方式二 1. 创建 Web Service Project, 命名为 TheClient. 2. 在 dos 命令下输入 wsimport -s "src 目录" -p "生成类所在包名" -keep "wsdl 发布地址" 示例: wsimport -s G:\workspace\webService\webService_Project\src -p com.pcm.ws.jws -keep http://192.168.1.105:8080/Service/ServiceHello?wsdl 3. 成功则返回 parsing WSDL... generating code... compiling code... 4. 刷新项目, 生成类; 5, 写调用方法 (同上);
三, 总结:
如何发布一个 Web 服务: a, 在类上添加 @WebService 注解 (注: 此注解是 jdk1.6 提供的, 位于 javax.jws.WebService 包中) b, 通过 EndPoint(端点服务) 发布一个 WebService (注: EndPoint 是 jdk 提供的一个专门用于发布服务的类, 该类的 publish 方法接收两个参数, 一个是本地的服务地址, 二是提供服务的类. 位于 javax.xml.ws.Endpoint 包中) c, 注: 类上添加注解 @WebService, 类中所有非静态方法都会被发布; 静态方法和 final 方法不能被发布; 方法上加 @WebMentod(exclude=true) 后, 此方法不被发布;
来源: http://blog.51cto.com/13952979/2171385