`
vvnet
  • 浏览: 112207 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Axis2 与 JAX-WS规范

    博客分类:
  • JAVA
阅读更多
Sun 和 Java 标准

JAX-RPC 1.0 是 Java 方面的 Web 服务的原始标准。虽然 JAX-RPC 的设计思想是可以为实际 Web 服务实现使用不同的协议实现,但在实践中,仅将其用于 SOAP 服务。已经开发了多个不同的 JAX-RPC 实现,其中使用最广泛的可能就是 Apache 框架了,其次是 Sun Microsystems 作为 Java Web Services Developer Pack 的一部分分发的 Reference Implementation。

在开发 JAX-RPC 1.0 时,行业中的很多人认为 rpc/enc 样式的 SOAP 将成为最方便和易用的 Web 服务。JAX-RPC 1.0 规范要求对 rpc/enc 和 doc/lit 样式进行支持,但并不要求对很多模式特性进行支持。这样就带来了一个很不幸的副作用,使 doc/lit SOAP(此技术是基于模式的)事实上成了一个二流选项。

JAX-RPC 1.0 对 Web 服务功能的认识也有一定的局限。从其名称可以看出,最初的目的是为了支持使用 XML 的远程过程调用(Remote Procedure Call,RPC)操作。Java 当时已经有了一项面向 Java 应用程序间的 RPC 调用的现有技术,即远程方法调用(Remote Method Invocation,RMI)。该规范团队选择了在现有 RMI 接口上对 JAX-RPC 进行建模。只要通过请求-响应操作使用 rpc/enc SOAP,此模型就可相当接近地进行匹配,不过映射到异步操作或其他传输的效果并不理想。到 2003 年底,有关人员认识到,总要对 JAX-RPC 进行大幅修订,以处理这些问题和其他问题,因此 Sun 组成了一个专家组开始进行 JAX-RPC 2.0 规范的开发。


JAX-*

JAX-RPC 2.0 开发工作的主要目标是对各项标准进行更新,以支持 JAX-RPC 1.X 的强制要求(基于 Java 5 特性,如 Annotation 和泛型),改进消息传递支持(包括除 HTTP 外的异步操作和传输),并通过使用 JAXB 2.0 绑定替代 JAX-RPC 1.X 的简单(但局限性很强)内置绑定来改进模式支持。出于对更改范围的强调和其他原因,这个后续标准的名称更改成了 JAX-WS 2.0。JAX-WS 2.0 现在已经提供了预发布版本,其生产版本预计将在 2006 中期推出。

JAX-WS 2.0 成功实现了对 JAX-RPC 1.X 的各种期望,甚至还提供一些额外的功能,如有限的 REST 支持。因为 JAX-WS 2.0 大量使用了 Annotation 和其他 Java 5 特性(这样就不能使用较旧的 JVM),因而一些开发人员可能会在使用时遇到一些问题,但对于很多开发人员而言,依赖 Java 5 特性将是一大优势。一个较为突出的顾虑是,JAX-WS 2.0 并不支持 Web 服务配置的 Annotation 的任何后备选项,这样就可能限制该框架的灵活性和长期优势。

JAX-WS 2.0 和 JAXB 2.0 都在准备绑定到 J2SE 规范的发布 Java 5 版本中。将这些组件作为标准 JVM 安装的一部分将无疑增加对开发人员的吸引力,因为这将避免在各个应用程序中包含大量框架的需求。将大量框架包含在标准 JVM 中的缺点在于(除了会增加基本下载大小外),在需要进行错误修复时,可能会导致很难进行版本控制,就像已经发生在 JAXP 之类的组件身上的情况一样(这些组件已经采用了绑定的方式)。

向互操作性进发

JAX-WS 2.0 直接支持 XOP/MTOM,而并不是其他新的 WCF 技术。不过,在 Sun 声明的与 Microsoft 互操作性承诺中,他们宣布将开发 WCF 中包含的其他技术的 Java 开放源代码版本。这些开放源代码实现将作为大型项目“GlassFish”的一部分进行开发,此项目涵盖了作为 Sun 的应用服务器(包括 JAX-WS 2.0 和 JAXB 2.0 参考实现)的一部分使用的所有技术。

在这些新的开放源代码项目成形之前,我们需要拭目以待。在 Sun 所公布的时间表中,将在 2006 年中期提供一些可用的东西,因此在本系列的后续文章中将能够提供更多的详细信息。


Apache 方法

Apache 项目数年来已在 Web 服务方面进行了大量的工作,其主要精力放在 Java 平台开发上。Apache 当前的 Java SOAP Web 服务生产平台是第三代 Axis 框架。Axis 得到了广泛的使用,这既包括开发人员下载并直接使用,也包括将其作为 SOAP 引擎嵌入到若干不同的应用服务器中。Axis 通常被认为是使用最广泛的 Java SOAP Web 服务平台。

不过,Axis 也有一些缺点。首先,它是基于 JAX-RPC 1.0 标准设计的,而后者在很大程度上约束了 Axis 体系结构,限制了其灵活性。随着为了以 SOAP 处理核心为基础构建新技术而对扩展的需求的增加,这个有限的灵活性就越来越成问题了。同时,转向 doc/lit SOAP 服务也带来了对更好模式支持的需求,对 Axis 代码而言,这在当时是非常不实际的。到 2004 年中期,Axis 团队认为需要重新进行编写工作,要在进行重新编写工作中应用通过实现 Axis 获得的经验,并同时提供更好的灵活性,以便将来进行扩展。

“救世主”Axis2

Axis2 是 Axis 的后续版本。它设计为轻量 SOAP 处理引擎(尽管对于 JAX-WS 2.0,Axis2 也包含一些对 REST 的支持),可以采用很多方式进行扩展。与原来的 Axis 不同,Axis2 并不刻意对实现任何特定 API 进行约束(尽管一些 JAX-WS 2.0 支持级计划使用 Axis2 核心代码的包装)。Axis2 的开发工作已经持续了一年多,不久就将投入生产。

Axis2 最好的特性之一就是为 SOAP 消息使用的 AXIOM 对象模型。XML 对象模型存在的时间几乎和 XML 本身一样长,最早的版本是来自 W3C 的 DOM 标准。AXIOM 和其他 XML 对象模型不同的地方在于,它利用新的 XML 解析器提供的灵活性来允许按需构造对象模型。这意味着,只有为实际需要通过模型访问的 XML 文档部分构建对象模型才会带来性能损失。

另一个主要 Axis2 特性是对可插入数据绑定的支持。此特性允许您选择最简单的方式来处理 SOAP 文档的 XML 有效载荷,对生成的代码进行自定义,以使用所选择的方法。可能的选择包括,直接使用 AXIOM,使用与原来的 Axis 相似的简单数据绑定方法,或使用 XMLBeans、JiBX 或 JAXB 2.0 等专用数据绑定框架。

扩展 Axis2

尽管 Axis2 仍然在开发中,不过已经有了一系列在 Axis2 基础上实现 SOAP 扩展的项目。这些项目包括 WCF 所支持的所有主要技术以及 Microsoft 计划在加载项(即独立计价的)应用程序中的一些扩展。Axis2 的体系结构允许使用一个称为模块 的组件方便地开发此类扩展。

WS-Addressing 和 WS-Security 模块当前包含在基础 Axis2 分发中(在将来将可能作为独立部分下载,或者甚至成为独立的项目,因为这些模块和核心 Axis2 代码之间并没有紧密耦合关系)。WS-ReliableMessaging 支持正在通过 Sandesha 项目开发,而 WS-Trust 和 WS-SecureConversation 正在通过 WSS4J 项目开发(已经提供了 WS-Security 实现)。WS-AtomicTransaction 和 WS-Coordination 正在通过 Kandula 项目进行实现。



总结:由此可见,Axis对JAX-RPC进行了实现,但Axis2并没有完全实现JAX-WS规范。
分享到:
评论
1 楼 gozen007 2013-03-14  

相关推荐

    axis-jax-ws-xfire.rar_jax

    axis,jax-ws,xfire客户端调用分析,以及webservice万能客户端

    webservice-axis2:使用 SOAP 和 Apache Axis2 (JAX-WS) 和 XStream 的 Web 服务(客户端和服务器)示例

    网络服务轴 2 使用 SOAP 和 Apache Axis2 (JAX-WS) 和 XStream 的 Web 服务(客户端和服务器)示例

    JavaWeb服务:Axis2中的JAXB和JAX-WS

    本文内容包括:Axis2中的JAXB在Axis2中使用JAX-WS结束语下载参考资料ApacheAxis2支持各种数据绑定技术,包括官方Java:trade_mark:标准JAXB2.x。Axis2还支持针对Web服务配置的Java标准JAX-WS2.x,作为其自有的配置...

    EndPoint、JAX-WS方式的WebService,lzws.zip

    EndPoint、JAX-WS方式的WebService,请根据“创建WebService的几种方式简介(EndPoint、JAX-WS、CXF、axis2、自定义Servlet+Document解析)”文章配套练习

    axis2-ws:axis2 Web服务,jax-ws Web服务

    axis2-ws Java实现WebService的两种方式 axis2 jax-ws

    WebService大讲堂之Axis2系列教程

    Axis2是目前比较流行的WebService引擎。...本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等

    Apache Axis2 Web Services, 2nd Edition.pdf

    Chapter 11, Developing JAX-WS Web Services - Learn the fundamentals of developing JAXWS based web services, the most popular web service development technology used by Java developers. Chapter 12, ...

    Developing Web Services with Apache Axis2

    这是最好的手把手教会你怎么去创建web service应用

    JAVA的WebService支持CXF与SAAJ第三版

    这个教程将了如何使用CXF开发WebService,包括JAX-WS、JAX-RS规范、数字证书、MTOM附件传输、异步调用、异常处理、使用Axis+Spring解决RPC/Encode的问题向旧规范JAX-RPC的兼容,第三版版教程在最一开始分别介绍了...

    Delphi7调用Java AXIS写的WebService

    因为经过我测试,Delphi7版本太老了,不兼容JAX-WS和AXIS2 另外我觉得AXIS1.4配置也是最简单的。 本例采用Dynamic Proxy方式,WSDD方式 delphiclient 是用delphi7写的WebService客户端 里面的地址请根据实际情况...

    Developing Web Services with Apache CXF and Axis2(3rd Edition).zip

    CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...

    axis2 webservices 例子

    使用jax-ws 来发布一个webservice,客户端使用 axis2 取得webservices 的数据。一个很好的例子,有返回数组的,有返回LIST。

    webservice Axis2教程

    本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等。本课程共分为两部分,其中第一部分为Axis2基础知识...

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java(Throws Could not find main class: org.apache.axis.wsdl.WSDL2Java)。 添加本文的jar包压缩包解压出来的所有jar包到当前使用的java.exe 命令的lib目录下的ext...

    CXF方式的WebService+Spring,lzws-cxf.zip

    CXF方式的WebService+Spring,请根据“创建WebService的几种方式简介(EndPoint、JAX-WS、CXF、axis2、自定义Servlet+Document解析)”文章配套练习

    底层Servlet实现WebService lzws.zip

    底层Servlet实现WebService,请根据“创建WebService的几种方式简介(EndPoint、JAX-WS、CXF、axis2、自定义Servlet+Document解析)”文章配套练习

    身份认证WSDL UserVerifyService.wsdl

    身份认证示例WSDL文件,用于反向生成JAVA文件代码,请配同“创建WebService的几种方式简介(EndPoint、JAX-WS、CXF、axis2、自定义Servlet+Document解析)”文章一起阅读

    webservieDemo.zip

    内含两个框架对应的项目,分别是Axis实现的webservice的java项目,和 jax-ws实现的webservice项目。开发工具均为 intellij idea。不同框架差别很大,自行百度查资料时不要看串了

    Java6中实现Web服务

    向您介绍在Java/J2EE环境下,实现Web服务的主要方法,它们分别是: (1) 使用JAX-WS 2.0来实现Web服务 (2) 使用Apache Axis来实现Web服务 (3) 使用Spring来实现Web服务 (4) 使用XFire来实现Web服务

Global site tag (gtag.js) - Google Analytics