`
truelove12358
  • 浏览: 77690 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

WebService流行框架之Axis和CXF

 
阅读更多


前言

今天主要讲解下WebService的两个流行的框架AxisCXF

正题

一、服务端发布WebService

在讲解之前,我们先来看一下这篇博客主要讲解的内容:


每一种框架都有自己的特点,有自己的侧重,但是他们的共同之处在于对发布WebService进行了封装,所以我们只需编写一个配置文件或者使用@WebService注解就可以发布WebService,我们这里着重说一下他们各自的特点:


1.Axis1

Axis1有两种发布方式:

1JWS方式

a.这种方式很简单,只需要将源码java文件放到AXIS_HOME下面,然后将后缀改为.jws,这样,Axis 会自动编译.jws文件,并把它自动加入到Java WebServie的服务中。


b.但是这种方式的缺点是:只能是java源代码,同时类中不能含有包名。

2WSDD方式

1.写一个java类(需要引入axis的jar包)


2.配置web.xml文件(配置AxisServletAdminServletSOAPMonitorServiceAxisHTTPSessionListener


3.写一个deloy.wsdd文件,部署项目(tomcat启动就可以部署项目)

安装axis1到tomcat:

1.Axis官方网站:http://ws.apache.org/axis/,可以在官网下载最新1.4的包:axis-bin-1_4.zip


2.将解压后的axis-1_4\webapps\下的axis目录考到%TOMCAT_HOME%/Webapps/目录下


3.启动tomcat后在浏览器里输入http://localhost:port/axis


4.点击上图中的Validataion链接,页面上会提示已经有的包和缺少的包的信息,根据提示将必须的包下载全,

将这些类包复制到%tomcathome%/webapps/axis/WEB-INF/lib/目录下

重新启动tomcat,直到Validation页面中看不到有Error与Warning的提示信息。

2.Axis2

客户端对于数据类型的不同有两种调用方式:RPCServiceClient和OMAbstractFactory方式

1)RPC方式:

处理基本的数据类型,如String,int等

2)OM方式:

可处理基本数据类型和自定义数据类型(比如java实体对象):通过xml的参数形式进行传递(传递的参数需要转换为OMElement)

注:如果参数或返回值是List类型则需要进行手动处理转换(手动编写一个服务端对传递过来的参数进行处理,将传过来的OMElement手动转换为List类型,调用执行方法,然后将返回的List类型再转换为OMElement传回客户端)

Axis2发布文件(编写services.xml

1.将官网下载的axis2.war包拷贝到tomcat_home/webapps下,运行即会解压


2.将其conf,modules和services文件夹拷贝到项目的WEB-INF下面,并将lib下的jar包拷贝到web-inf/lib下面


3.配置Web.xml(配置AxisServletAxisAdminServlet


4.编写services下面的services.xml文件,指定要发布的类

3.CXF

CXF发布WebService有三种方式:main方式,基于和不基于Spring发布到容器

1main方式

引入jar包,在接口和实现类上使用@WebService即可,发布完成后即可在浏览器中访问url,不需要启动tomcat等服务。

2)不基于Spring方式发布到容器

a)引入cxfjar包,编写web.xml(配置自定义的CXFServlet,该CXFServlet需要继承CXFNonSpringServlet


b)编写实体类,业务类和服务类(实体类需要和服务类在同一包下,否则报错)


c)启动Tomcat,即可发布服务

3)基于Spring方式发布到容器

a)web.xml配置(Spring配置,cxf封装的CXFServlet配置)


b)applicationContext-server.xml配置

<!--Import apache CXF bean definition 固定-->

<importresource="classpath:META-INF/cxf/cxf.xml" />

<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

<importresource="classpath:META-INF/cxf/cxf-servlet.xml" />

<!--services接口配置 -->

<beanid="helloServicesBean"class="com.ms.services.impl.HelloServicesImpl" />

<!--CXF 配置WebServices的服务名及访问地址 -->

<jaxws:serverid="helloServices" address="/HelloServices"

serviceClass="com.ms.services.IHelloServices">

<!--要暴露的webservice服务 -->

<jaxws:serviceBean>

<refbean="helloServicesBean"/>

</jaxws:serviceBean>

</jaxws:server>

c)编写类

实体类

服务接口(类头使用@WebService)

服务实现(类头使用@WebService(endpointInterface="com.ms.services.IHelloServices"))

以上是关于AxisCXF发布特点及其需要注意的地方,是我做例子时的总结,有兴趣的同学可以下载源码

二、客户端调用WebService

服务端将接口发布成功后,就等着客户端来进行调用了,客户端如何并通过什么方式来调用我们服务端发布的wsdl文件呢?

1.调用一次WebService的本质:


1.客户端把调用方法参数,转换生成XML文档片段(SOAP消息,input消息,该文档片段必须符合WSDL定义的格式),通过网络,把XML文档片段传给服务器

2.服务器接收到XML文档片段,解析XML文档片段,提取其中的数据,并把数据转换调用WebService所需要的参数值。

3.服务器执行方法。

4.把执行方法得到的返回值,再次转换生成为XML文档片段(SOAP消息,output消息)——该文档片段必须符合WSDL定义的格式,通过网络,把XML文档片段传给客户端。

5.客户端接收到XML文档片段,解析XML文档片段,提取其中数据,并把数据转换调用WebService的返回值。

从上面调用本质来看,要一个语言支持WebService,唯一的要求是:该语言支持XML文档解析、生成、支持网络传输。

2.客户端调用方式:

客户端调用服务端方法总体来说有三种方式:

1DIIDynamic Invocation Interface

采用直接调用方式,可以在程序中设置诸多的调用属性,使用较为灵活,但是调用过程却相对繁琐复杂,易造成代码膨胀且可重用性低,每次调用不同的Web Service都要重复进行大量编码。

这也是我们比较常用的一种方法,就是调用invoke方法,传入方法名和方法参数即可。

2Stubs

JAX-RPC使用静态的Stub方式包装对底层接口的调用,从而提供一种更为简便的调用方式。使用该方式需要利用支持环境(比如Axis)所提供的工具根据WSDL预生成WebService客户端的实现代码。因此如果服务的WSDL发生变化,就必须重新生成新的客户端代码并进行重新部署。

该方法需要使用wsdl2java命令来预生成WebService客户端代码,为了支持该命令,需要安装一些环境。

3Dynamic Proxy

动态代理(Dynamic Proxy)的方法实现对Web Service的动态调用,可以在运行时根据用户定义的Client端接口创建适配对象。从而避免了直接操作底层的接口,减少了客户端的冗余,屏蔽了调用相关的复杂性。

该方法主要在于客户端接口,该客户端接口需要继承java.rmi.Remote接口,然后将服务端的接口中的方法copy过来。

小结:

从发展历史角度来看,很容易理解他们的侧重点,Axis1最早,所以注重的只是简单的发布接口即可,之后随之Axis2对其进行了优化,可以支持自定义参数,但并不完善,所以CXF的出现对这一功能进行了完善并且适应了潮流,实现了与Spring的集成,跟这些比起来,EJB3中对于WebService的支持只需要使用一个@WebService即可完成,所以软件的开发是让使用者变傻,而我们学习这些是为了理解其原理和本质。

分享到:
评论

相关推荐

    WebService流行框架之Axis和CXF=.docx

    【WebService流行框架之Axis和CXF】 WebService是一种基于标准的,平台和语言无关的通信机制,用于不同系统之间的互操作性。在Java世界中,有两个非常流行的WebService框架,即Axis和CXF,它们都提供了方便的方式来...

    webService(基于cxf)的完整例子

    CXF是一个流行的开源Java框架,用于构建和消费Web服务。它提供了丰富的功能,包括SOAP、RESTful API支持以及多种协议和标准的实现。在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何...

    webservice axis2 cxf jar包及简单实例

    本文将深入探讨两种流行的Java Web服务框架——Axis2和CXF,并提供一个简单的实例来帮助理解它们的工作原理和使用方法。 首先,让我们了解一下`Axis2`。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的...

    WebService Axis和XFire(CXF)的开发流程

    本篇主要介绍两种常用的WebService框架——Axis和XFire(现已被CXF合并)的开发流程。 1. **Axis**:Axis是Apache软件基金会开发的开源SOAP WebService框架,它支持多种编程语言,如Java、Python等。Axis以其良好的...

    cxf与axis2区别

    CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2框架的区别,以帮助开发者...

    WebService大讲堂之Axis2及其它web service资料

    【WebService大讲堂之Axis2及其它Web Service资料】 在IT行业中,Web Service是一种通过互联网进行应用程序间交互的标准技术。它允许不同的系统之间共享数据和服务,不受编程语言、操作系统或硬件平台的限制。本...

    WebService详细解析(axis,xfire,cxf,授权认证加密解密)

    本篇文章详细介绍了WebService的基本概念和AXIS、XFire、CXF这三个流行的Java WebService框架,以及授权认证和加密解密在WebService中的应用。这些内容对于理解和实践WebService开发具有重要价值,为开发者提供了...

    webservice(axis,xfire,cxf)

    本压缩包文件提供了关于Web服务开发的详细指南,特别关注了三个主流的Java Web Service框架:Axis、XFire和CXF。 1. **Axis**:是由Apache软件基金会开发的开源SOAP(Simple Object Access Protocol)引擎,它是...

    Axis-cxf-WebService.zip

    Apache Axis是最早的Java WebService框架之一,它为开发人员提供了一种快速、简单地创建和部署Web服务的方法。Axis支持SOAP 1.1和1.2,WSDL(Web服务描述语言),以及XML Schema。在本实例中,服务端可能包含了使用...

    关于WebService的实例及相关axis/apache-cxf的应用

    在本文中,我们将深入探讨WebService的原理以及如何利用Apache Axis和Apache CXF这两个流行的Java框架来实现和消费WebService。 首先,理解WebService的基础概念至关重要。WebService是一种通过互联网进行通信的...

    axis cxf 创建webservice

    本文介绍了如何使用Eclipse、Axis2以及Spring和CXF来创建和调用WebService。通过实际操作步骤,读者可以了解到构建WebService的基本流程和技术要点。无论是对于初学者还是有一定经验的开发者来说,都能够从中获得...

    axis2发布webservice和调用axis2服务接口

    在IT行业中,Axis2是Apache软件基金会开发的一个用于构建Web服务和Web...在实际开发中,还可以结合其他工具和框架,如Spring-WS、CXF等,以提升效率和灵活性。同时,理解SOAP协议和WSDL规范也是必不可少的基础知识。

    java webservice AXIS,XFire , CXF

    在Java中,有多个流行的WebService框架,其中包括AXIS、XFire以及本文主要讨论的Apache CXF。 AXIS是早期广泛使用的Java WebService框架,它提供了一种简单的方式来创建和消费Web服务,支持SOAP和WSDL。然而,随着...

    Axis1,Axis2,Xfire,CXF区别

    Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种新一代的 WebService 平台,它...

    webservice :spring 3+cxf3.4服务方,AXIS1.4请示方调用

    其中,Spring框架与Apache CXF是实现RESTful或SOAP风格的Web服务的常用工具之一。而Axis 1.4则常作为客户端来调用这些服务。本文将详细介绍如何使用Spring 3 + CXF 3.4搭建服务端,并通过Axis 1.4进行调用。 #### ...

    Axis2,CXF版本学习笔记

    文件“WebService_CXF学习.doc”和“axis2_WebService_开发指南.docx”、“axis_WebService_-_开发指南.docx”应该包含了关于这两个框架的详细教程和实践案例,可以帮助你更深入地理解和应用它们。 总的来说,Axis2...

    WebService:Axis客户端调用需要身份验证的CXF服务

    Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性。 首先,理解身份验证在Web服务中的重要性。身份验证是确保只有授权...

    WebService CXF 详细教程

    与 Axis2 和 JBossWS 等其他WebService框架相比,CXF在性能、易用性和社区支持方面都有优势。CXF的API设计更加直观,且其对REST的支持使其在现代Web开发中更具竞争力。 **七、最佳实践** 1. **保持WSDL清晰简洁**...

    流行Webservice框架性能测试与对比研究

    内容概要:文章介绍了几种流行的Webservice框架—— Apache Axis1/Apache Axis2/Codehaus XFire/Apache CXF,并对其性能进行了对比测试和分析。采用了JAVA作为测试语言并在本地和远程环境中进行测试,最终发现Apache...

    WebServices开发-Axis实例CXF实例

    在本主题中,我们重点关注两个流行的Java WebServices框架:Axis和CXF。这两个框架简化了WebServices的开发过程,提供了客户端和服务端的实现。 **Axis** 是Apache软件基金会的一个开源项目,最初由IBM开发,用于...

Global site tag (gtag.js) - Google Analytics