`

WebService CXF --- CXF简单介绍

阅读更多

1、WebService介绍
     WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节。只要WebService公开了服务接口,远程客户端就可以调用服务。WebService是基于http协议的组件服务,WebService是分散式应用程序的发展趋势。

2、WebService的开源实现
     WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在JAVA领域,WebService的框架很多,例如:AXIS,XFire,CXF等。AXIS,XFire相对比较成熟,资料相对较多。在这里我们只对CXF进行讲解,其他大家想学习到互联网找相关资料学习。

3、CXF框架由来
     ApacheCXF项目是由ObjectWeb Celtix和CodeHaus XFire合并成立。ObjectWeb Celtix是由IONA公司赞助,于2005年成立的开源Java ESB产品,XFire则是业界知名的SOAP堆栈。合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架,包括SOA服务创建,服务路由,及一系列企业级QoS功能。

4、ApacheCXF架框的目标
   1).概述
        高性能
        可扩展
        直观易用
   2).支持标准
         JAX-WS, JSR-181, SAAJ, JAX-RS
         SOAP 1.1, 1.2, WS-I BasicProfile, WS-Security, WS-Addressing, WS-RM, WS-Policy
         WSDL 1.1
          MTOM
   3).传输方式,绑定,数据绑定,传送数据格式

         传输方式: HTTP, Servlet, JMS
         绑定: SOAP, REST/HTTP
         数据绑定: JAXB 2.x, Aegis, XMLBeans, SDO
         传送数据格式: XML, JSON, FastInfoset
       
   4).部署灵活
         轻量级: 可以将服务部署到 Tomcat或其支持Spring的容器中
         JBI整合: 部署一个服务引擎到JBI容器,例如: ServiceMix, OpenESB or Petals
        J2EE集成: 可以将服务部署到J2EE应用服务器上,例如:Geronimo, JOnAS, JBoss, WebLogic, 及WebSphere
         Java 客户端/服务端可以独立性
   5).支持多种编程语言
         完全支持 JAX-WS 2.x 客户端/服务端模式
         JAX-WS 2.x synchronous, asynchronous and one-way API's
         JAX-WS 2.x Dynamic Invocation Interface (DII) API
         支持 wrapped and non-wrapped 数据格式
         XML messaging API
         支持JavaScript 和 ECMAScript 4 XML (E4X)
         支持CORBA
         支持JBI及ServiceMix
   6).可编程环境
        Java to WSDL
        WSDL to Java
        XSD to WSDL
        WSDL to XML
        WSDL to SOAP
        WSDL to service

 

 


一、WebService概述
   1、Web Services 可以将应用程序转换为网络应用程序。
     通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。
     Web Services 可以被其他应用程序使用。
     通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连接。
     基本的 Web Services 平台是 XML+HTTP(XML 是 Web Services 的基础)。
     Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。
  
   2、WebService一般分为两种:
      REST式WebService,基于HTTP协议;
      RPC式WebService,基于SOAP协议,不过SOAP也是基于HTTP传输的。

    狭义上的WebService是指第二种RPC式的WebService,也就是我们常说的那种。

    JAVA中有三种WebService规范,分别是JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。
    这里先说JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。
    早期的JAVA Web服务规范JAX-RPC(Java API ForXML-Remote Procedure Call)目前已经被JAX-WS 规范取代,
    JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC。

二、什么是Web Services?
    Web Services 是应用程序组件
    Web Services 使用开放协议进行通信
    Web Services 是独立的(self-contained)并可自我描述
    Web Services 可通过使用UDDI来发现
    Web Services 可被其他应用程序使用
三、它如何工作?
   基础的 Web Services 平台是 XML + HTTP。
   HTTP 协议是最常用的因特网协议。
   XML 提供了一种可用于不同的平台和编程语言之间的语言。
   Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。

四、Web services 平台的元素:
    SOAP (简易对象访问协议)
    UDDI (通用描述、发现及整合)
    WSDL (Web services 描述语言)

   1、什么是 SOAP?
      SOAP 指简易对象访问协议(Simple Object Access Protocol)
      SOAP 是一种通信协议
      SOAP 用于应用程序之间的通信
      SOAP 是一种用于发送消息的格式
      SOAP 被设计用来通过因特网进行通信
      SOAP 独立于平台
      SOAP 独立于语言
      SOAP 基于 XML
      SOAP 很简单并可扩展
      SOAP 允许您绕过防火墙
      SOAP 将作为 W3C 标准来发展
     是Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他可以通过SOAP调用你建立的Web服务中的一个或多个操作。
     SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
    
    它有三个主要方面:
      1)、XML-envelope为描述信息内容和如何处理内容定义了框架;
      2)、将程序对象编码成为XML对象的规则;
      3)、执行远程过程调用(RPC)的约定。

   2、什么是 WSDL?
      WSDL 指网络服务描述语言(Web Services Description Language)
      WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言
      WSDL 使用 XML 编写
      WSDL 是一种 XML 文档
      WSDL 用于描述网络服务
      WSDL 也可用于定位网络服务
      WSDL 还不是 W3C 标准
     是一个 XML 文档,它对web Services的接口进行了定义,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

   3、什么是UDDI?
      UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。
      UDDI 指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。
      UDDI 是一种用于存储有关 web services 的信息的目录。
      UDDI 是一种由 WSDL 描述的网络服务接口目录。
      UDDI 经由 SOAP 进行通迅。
      UDDI 被构建于 Microsoft .NET 平台之中。
    是一种查找相应服务的机制,用于web服务的发布、浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
    这里特别要提出,UDDI不是必须的,事实上目前在企业项目中很少用到UDDI。

五、Web Service特点
    Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)独立于平台、独立于开发语言的标准,是创建可互操作的、分布式应用程序的新平台。
   优点: 跨防火墙的通信、应用程序集成(异构系统)、软件和数据重用、跨语言 跨平台
   缺点: 访问速度慢、稳定性问题。

六、安全性
   Webservice中的安全策略的实施主要从以下三个方面考虑:
     1.传输时安全。通常采用SSL/HTTPS 对连接加密,而不是传输数据。
     2.数据安全。通常采用数据加密(XML Encryption) 数字签名(XML-DSIG)。
     3.底层架构提供的安全策略,利用应用服务安全机制。


    对于传输时的安全,比较容易地加入到Webservice应用。可以利用HTTPS协议,就可以获得连接过程中的安全。

      a.我们目前这个项目没有计划采用https。当然我是很希望采用这种策略,因为系统的安全性越高越好啊,但是没采用我也没办法。
        传输过程中数据的保护是对于消息本身的保护。你可以使用已有的XML安全扩展标准,实现数字签名的功能,从而保证你的消息是来自特定方并没有被修改过。XML文件的加密技术从大程度上加强了Webservice的安全,它能够定制数据传输到后,能否被接受者所查看,进一步完善了传输后的安全,业界也在不断的制定Webservice的安全标准,比如SAML 和WS-Security。
      b.数据的加密。目前采用了对XML文件中部分数据加密的策略。原因很简单,http上不能传明文吧,而且实现起来也不是很困难。只要客户端和服务端约定好一种加解密的算法,加上适当的密钥就可以了。当然实现过程中,如果两端的语言和平台不同,例如客户端是.net,服务端是java,.net的某些算法的具体模式需要清楚才行,否则调试起来会有些小麻烦。
      c.数字签名可以确保传递的数据没有被第三方恶意修改过。数字签名这块理论上了解一点,具体的实施没有做过,听前辈高人说,可以采用伪签名机制,没有深入学习。整体上的设想是,将来用户量上来了,可以购买正式的数字签名产品,来避免数据被篡改的危险。目前针对数据可能会被篡改的危险,采用了消息摘要的策略,因为它确实具备这种能力,也因为这种策略被广为采用。
      d.想到的另一种危险,恶意的重复发送问题。如果恶意用户截获了正在传输的数据,反复不断的重复发送,这种情况该如何处理。这种情况对整个系统来说,危险系数太高了,会造成数据的混乱,业务处理的错误,后果非常之严重,所以必须要预防。目前的策略是,因为数据是要保存到DB中的,正好表中的时间字段和其他的几个字段可以组成数据的唯一标识,这样就很容易的预防了这种情况的发生,呵呵,还不错。
   
    最后一层保护就是依靠底层架构的安全,这更多的来自于操作系统和某些中间件的保护。比如在J2EE中,主持Webservice的应用服务器。目前很多的J2EE应用服务器都支持Java Authentication and Authorization Service (JAAS),是被加入到J2SE 1.4当中的。利用主持Webservice的服务器,实现一些安全机制这是很自然的做法。另一种利用底层架构的安全方法就是,做一个独立的负责安全的服务器,Webservice的使用者和创建者都需要与之取得安全信任。

    对于server的安全策略,目前还没有想好怎么处理。

    典型的应用:WS-Security规范

    ================转载:讨论帖http://www.iteye.com/topic/213038================

七、WS-可靠性消息机制

八、WS-事件机制

九、SOAP消息传输优化机制(MTOM)


题外话
   SOA与Web Service
      SOA与Web Service的关系,这是经常被混淆的两个概念。
      SOA(Service-oriented architecture,面向服务架构)。 将企业应用系统中细粒度的功能打包成粗粒度的服务,通过中间方式(语言),实现异构系统(操作系统、开发语言)之间的通讯、调用。
      SOA并不是一种技术,而是一种软件设计理念。
      Web service != SOA,但Web service 是目前实现SOA的最好方式。

分享到:
评论

相关推荐

    webservice-cxf-spring-jar.zip

    【标题】"webservice-cxf-spring-jar.zip" 是一个包含了使用Apache CXF与Spring框架集成开发Web服务的Java库集合。这个压缩包提供了一整套必要的JAR文件,以便于开发者在他们的项目中快速搭建和运行基于CXF的Web服务...

    WebService CXF --- 传输文件MTOM

    WebService CXF,全称Apache CXF,是一款开源的Java框架,用于构建和开发Web服务。它支持多种协议和规范,包括SOAP、RESTful、XML以及Web服务标准如WS-*。在"WebService CXF --- 传输文件MTOM"这个主题中,我们将...

    webservice apache-cxf-3.0.7 jar包

    Apache CXF 是一个开源的Java框架,主要用于构建和开发Web服务。这个项目源自XFire,并在2007年合并到Apache基金会,更名为CXF。CXF允许开发者以SOAP、RESTful、XML/HTTP、WS-*协议等多种方式来实现Web服务。在本...

    webservice-cxf-2.3.5

    Apache CXF 是一个开源的 Web 服务框架,用于构建和部署 SOAP 和 RESTful Web 服务。版本 2.3.5 是该框架的一个历史版本,它在当时提供了丰富的特性和功能,帮助开发者创建高效、灵活的网络应用。下面将详细阐述 ...

    apache-cxf-3.1.1跟3.1.6所有jar包

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和RESTful应用程序。CXF这个名字来源于两个合并的项目:XFire和Celtix,这两个项目都是在2007年合并到Apache基金会,形成了现在的CXF项目...

    apache-cxf-2.2.6.zip webservice cxf开发利器完整开发包

    CXF允许开发者通过简单的API来创建、发布和消费Web服务,它支持多种协议和标准,如SOAP、RESTful、WS-*规范等。 1. **Web服务基础**:Web服务是一种基于开放标准(如XML、WSDL和SOAP)的应用程序接口,使得不同系统...

    WebService CXF --- 由WSDL文件开发Client端

    WebService CXF是一个强大的开源框架,用于创建和消费Web服务。它允许开发者基于WSDL(Web Service Description Language)文件快速地生成服务端和客户端代码,极大地简化了Web服务的开发流程。在本篇中,我们将深入...

    apache-cxf-3.1.6所有jar包

    5. **客户端API**:CXF提供了一套全面的客户端API,使得调用Web服务如同调用本地方法一样简单。 6. **插件体系**:CXF的插件体系允许开发者自定义和扩展其功能,比如添加新的数据绑定机制、处理特定的协议或格式。 ...

    cxf-manifest.jar

    webservice CXF 报错:java.lang.NoClassDefFoundError: org/apache/neethi/builders/AssertionBuilder 需要用到此jar文件 通过apache官网可获得。 文件位置\apache-cxf-2.7.13\lib

    apache-cxf-2.7.6所有jar包

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。CXF这个名字来源于两个项目——Celtix和XFire的合并,这两个项目都致力于提供高质量的Web服务实现。在Apache CXF 2.7.6版本中...

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    在2.7.7版本中,CXF提供了一系列的API和工具,使得开发过程更加简单和高效。它支持Java语言的JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)标准,同时兼容Spring框架,...

    apache-cxf-3.0.16-jar.zip

    //第三方系统的webservice Client client = dcf.createClient("http://localhost:9010/CxfWebservice?wsdl"); //第三方系统的webservice参数个数 Object[] obj = new Object[2]; obj[0]="CxfWebservice"; obj...

    webservice-CXF-spring+maven

    【标题】"webservice-CXF-spring+maven" 指的是使用Apache CXF框架,结合Spring和Maven构建Web服务。Apache CXF是一个开源的Java框架,它允许开发人员创建和消费各种Web服务,包括SOAP和RESTful类型。Spring框架则...

    apache-cxf-3.1.0

    标签中的"CXF webservice"表明了CXF的主要用途——构建Web服务。CXF支持两种主要的Web服务标准:JAX-WS和JAX-RS。JAX-WS用于基于SOAP的Web服务,而JAX-RS则面向RESTful风格的服务。这两种技术的结合使CXF成为一个...

    apache-cxf-3.3.4.rar

    apache-cxf-3.3.4.zip wsdl webservice 通过wsdl2java的命令生成客户端代码 进入dos窗口,进入apache-cxf-2.3.1\bin所在的目录,输入指令: wsdl2java -p com.jaxb.client -d ../src -all E:\webService\**...

    webService-cxf-demo

    【标题】"webService-cxf-demo" 是一个基于Apache CXF框架实现的Web服务示例项目,主要用于展示如何创建和使用Web服务。CXF是一个开源的Java框架,它提供了多种方式来开发符合WS-*标准的Web服务,包括SOAP、RESTful ...

    apache-cxf-2.6.1最小依赖包

    apache-cxf-2.6.1最小依赖包,自测可用,请自行下载。本来想免费分享给各位,但是分数不能标0。另有cxf-2.7.18版本,链接如下:https://download.csdn.net/download/jxsczqh/10814176

    apache-cxf-3.2.7.zip

    1. **CXF框架介绍**: Apache CXF是基于JAX-WS和JAX-RS标准的,它允许开发者以编程或基于注解的方式创建Web服务。CXF不仅支持SOAP协议,还支持RESTful API,使得它在Web服务领域非常灵活。 2. **生成Java Web服务...

    apache-cxf-3.2.4完整版

    Apache CXF是一个开源的Java框架,它主要用于构建和开发Web服务。CXF这个名字来源于两个它合并的项目:Celtix和XFire。这个框架允许开发者使用多种编程模型,包括JAX-WS和JAX-RS,来创建和消费Web服务。在本案例中,...

    cxf-core-3.1.2.jar

    cxf,webservice工具包

Global site tag (gtag.js) - Google Analytics