了解Web Service

一、Web Service 介绍
Web Service 一般是利用XML或JSON传递结构化数据,具有跨平台的特性,应用比较广泛.
1、名词解释
Web Service:也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络。是Soap的基础。

SOAP:即简单对象访问协议(Simple Object Access Protocal),它是用于交换XML编码信息的轻量级协议,是Web Service的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。
SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。SOAP请求是HTTP POST的一个专用版本。

WSDL:(Web Services Description Language) Web Service描述语言WSDL,说明一组SOAP消息以及如何交换这些信息,用于描述Web Service及其函数、参数和返回值。

UUID: (Universal Description, Discovery, and Integration)是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

二、实现一个完整的Web服务包括以下步骤:

1. Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册; (发布)

2. Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务; (发现)

3. Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;(发现)

4. 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;(绑定)

5. Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。(绑定)

三、Java开发中经常使用到的几种WebService技术实现方案介绍
常用的有:JWS,Axis,Axis2,XFire,CXF,Dubbo …
1、JAX-WS (Java 6引入)是SOAP协议的一个Java的实现规范,这个新规范是为了简化基于SOAP的Java开发。JAX-WS规范其实就是一组XMLweb services的Java API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented来实现自己的web services。通过使用 Java™ API for XMLWeb Services (JAX-WS) 技术设计和开发 Web 服务,可以带来很多好处,能简化 Web 服务的开发和部署,并能加速 Web 服务的开发。

2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。

3、XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。

4、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。

5、Dubbo是一个分布式服务框架,以及SOA治理方案。可以与Spring MVC进行无缝集成,其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
Dobbo主页:http://dubbo.io/Home-zh.htm

四、利用JWS发布一个简单的Web Service.

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;
/**
 * 利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务
 * @author Administrator
 */
//targetNamespace 默认为"http://service.webservice/"
@WebService(targetNamespace="http://www.service.mywebservice.org")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class MyWebService {
  //@WebMethod(exclude=true)//当前方法不被发布出去
  //标注要暴露给客户端的方法
  @WebMethod
  public String hello(@WebParam(name="in0") String name) {
    System.out.println("===="+name);
    return " Hello, " + name + " ! ";

   public static void main(String[] args) {

     MyWebService myWebService = new MyWebService();
          //参数1:服务的发布地址, 参数2:服务的实现者
          //Endpoint  会重新启动一个线程
     Endpoint ep = Endpoint.publish("http://127.0.0.1:8080/myservice/seyHello", myWebService);

       System.out.println("webservice发布成功!");
   }   
}

打运行后,开浏览器输入:http://127.0.0.1:8080/myservice/seyHello?wsdl ,就可以看到wsdl信息.

五、参考资料

参考资料:http://blog.csdn.net/zolalad/article/details/25158995

Web Service 的工作原理:http://www.cnblogs.com/Jessy/p/3528341.html

jax-ws的注解说明:http://eksliang.iteye.com/blog/2265427

基与REST风格的Web Service :http://www.ibm.com/developerworks/cn/webservices/ws-restful/

几种流行Webservice框架性能对比:http://www.cnblogs.com/firstdream/p/5575928.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值