`
zym_nanako
  • 浏览: 85650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Axis开发Web Service

阅读更多
选择Axis的理由:
1. 开发速度快
2. 可移植性好,可在不同的application server, web container中运行
3. 成熟稳定,Axis是从Apache SOAP(IBM SOAP4J)发展过来的,Axis 1.0在2002年10月发布,Axis是许多商业app server的基础,如WebSphere。

开发WSDL
开 发Web Service应该从设计WSDL入手。对于使用了复杂数据类型的web service,如果对手写xml schema不是很熟悉可以先编写web service的java接口定义和表示相关的参数、返回值类的类,然后再用Axis的Java2WSDL工具生成wsdl的草稿。
修改生成的 wsdl草稿要考虑合理选择binding的方式,WSDL规范定义了两种binding style:rpc和document,rpc意味着web service的客户端和服务端使用远程方法调用的约定进行通信,而使用document意味着客户端和服务端用xml文档进行通信。WSDL还规定了两 种use:encoded和literal,literal意味着soap body中的xml是用相应的schema约束的;encoded意味着具体的soap message语义需要指定编码规则(通常是所谓的SOAP encoding,在SOAP规范的第五部分定义,又叫section 5 encoding)来解释。所以在wsdl中共有style/use的四种组合: rpc/encoded, rpc/literal, document/encoded, document/literal。第三种方式没有实际应用。另外,Microsoft提出了一种所谓的document/literal wrapped的方式,它用一个与operation同名的元素作为所有参数的"包装器"。document/literal wrapped方式解决了document/literal方式无法表达operation名称的缺点。
rpc/encoded(Axis默认的 方式)可以表达的对象图、多态的数据,wsdl定义的抽象的SOAP数据模型依赖于具体的实现,这可能带来互操作性问题(如Axis的默认使用multi -ref表达soap响应),所以rpc/encoded是WS-I BP1.0规范所禁用的方式。

关于如何合理地选择的style/use方式请参考developerworks上的
http://www-106.ibm.com/developerworks/webservices/library/ws-whichwsdl/

用Axis 的Java2WSDL工具生成wsdl可以使用Axis发布时自带的命令行工具或ant task。但两者配置繁琐,本文以maven-axis-plugin为例说明如何使用。maven-axis-plugin的java2wsdl可以根 据java的interface或class生产相应的wsdl。
使用该插件前先要下载:
maven plugin:download -DartifactId=maven-axis-plugin -DgroupId=maven-plugins -Dversion=0.6-jus -Dmaven.repo.remote=http://ultra/maven/
然后,需要配置该插件, 使用java2wsdl至少需要配置两种信息:一是namespace和package之间的映射关系,二是要暴露为web service的class或interface的名称(FQCN),以及该class的对应的service的location(也就是通过什么url 可以访问到该web service)和namespace。
示例:
# axis java2wsdl plugin settings
maven.java2wsdl.namespaceMappings                      = http://www.ceservice.com.cn/ce/PAPS/exception=com.erry,
http://www.ceservice.com.cn/ce/PAPScom.erry.webservice,
http://www.ceservice.com.cn/ce/PAPS/datatype/baseinfo=com.erry.webservice.VO.baseinfo,
http://www.ceservice.com.cn/ce/PAPS/datatype/srvsht=com.erry.webservice.VO.srvsht
maven.axis.classnames                                  = com.erry.webservice.ServiceSheetServiceSoapBindingImpl
com.erry.webservice.ServiceSheetServiceSoapBindingImpl = http://localhost/services/ServiceSheetService,http://www.ceservice.com.cn/ce/PAPS

namespace 和package之间的映射关系的用maven.java2wsdl.namespaceMappings属性表示,其值为逗号分隔的 namespace=package;maven.axis.classnames指定要暴露为web service的class或interface的名称,如果有多个用逗号分隔。每个class或interface还要指定location和 namespace(两者用逗号分隔)。
配置完,运行maven axis:java2wsdl即在target/axis/wsdl目录下产生与class同名(FQCN),wsdl为后缀的文件。


用Axis开发Web Service客户端的步骤
编 写完wsdl后,可以用Axis的wsdl2java生成web service的客户端,wsdl2java生成的客户端是stub方式的。它包括endpoint借口、实现该接口的stub、 serviceLocator、可选的单元测试代码。其中,serviceLocator中hard code了服务端地址。可以用spring的dependency injection将服务器地址放在spring bean配置文件中。

使 用maven-axis-plugin生成client代码首先需要配置,主要涉及的信息有wsdl文档的位置(maven.axis.url), namespace和package的映射(maven.wsdl2java.namespaceMappings),是否生成单元测试 (maven.axis.testcase)。maven.wsdl2java.namespaceMappings的格式和 maven.java2wsdl.namespaceMappings一样。
示例:
maven.axis.url                        = ${maven.src.dir}/conf/srvshtservice.wsdl
maven.axis.testcase                   = true
maven.wsdl2java.namespaceMappings     = http://www.ceservice.com.cn/ce/PAPS/exception=com.erry,
http://www.ceservice.com.cn/ce/PAPS=com.erry.webservice,
http://www.ceservice.com.cn/ce/PAPS/datatype/baseinfo=com.erry.webservice.VO.baseinfo,
http://www.ceservice.com.cn/ce/PAPS/datatype/srvsht=com.erry.webservice.VO.srvsht

配 置完后运行maven axis:wsdl2java即在target/axis/src目录下产生endpoint interface,stub, serviceLocator和data type对应的Java Class。如果maven.axis.testcase为true,则还在target/axis/test目录下生成相应的单元测试代码。

用Axis开发Web Service服务器端的步骤
Axis 的wsdl2java工具除了客户端代码外还可以生成服务器端代码的框架和web service部署说明文件(wsdd)。Axis生成的默认wsdd基本上能够满足一般的要求了。其中需要修改的有:将multi-ref设成 false,这只要在globalConfiguration中增加<parameter name="sendMultiRefs" value="false"/>;在service中加入<wsdl>元素指定wsdl文件,而不是让Axis在运行时刻生成。 <wsdl>元素中的文件路径是相对于web app的WEB-INF/classes目录的。

和生成客户端代码类似,使用 maven-axis-plugin生成server端框架带和部署说明文件首先需要配置。配置的内容除了wsdl文档的位置,namespace和 package的映射外还需要指定deploy scope,maven.axis.serverside设为true表示生成服务端代码。
示例:
maven.axis.url                        = ${maven.src.dir}/conf/srvshtservice.wsdl
maven.axis.deployscope                = application
maven.axis.serverside                 = true
maven.axis.testcase                   = true
maven.wsdl2java.namespaceMappings     = http://www.ceservice.com.cn/ce/PAPS/exception=com.erry,
http://www.ceservice.com.cn/ce/PAPS=com.erry.webservice,
http://www.ceservice.com.cn/ce/PAPS/datatype/baseinfo=com.erry.webservice.VO.baseinfo,
http://www.ceservice.com.cn/ce/PAPS/datatype/srvsht=com.erry.webservice.VO.srvsht

配置完后运行maven axis:wsdl2java即在target/axis/src目录下产生endpoint interface,data type对应的Java Class,JSE框架代码,部署说明文件等。


Axis开发调试工具
Axis自带了一个名为tcpmon的工具用于截获SOAP消息。使用该工具可以看到完整的HTTP请求和响应。本文以maven-axis-plugin为例说明如何启动该工具。
配置
# axis tcpmon plugin settings
maven.axis.tcpmon.listen.port=90
maven.axis.tcpmon.destination.host=localhost
maven.axis.tcpmon.destination.port=80
第一行是tcpmon监听端口,web service的客户端应该向该端口发出请求,第二、三行是web service服务端所在的主机和端口
配置完,运行maven axis:tcpmon即出现tcpmon swing界面。此时,可以运行web service的客户端了。
分享到:
评论

相关推荐

    Axis开发Web Service实例

    ### Axis开发Web Service实例详解 #### 一、概述 在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它...

    用axis2开发web service

    【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...

    axis开发web service程序

    ### Axis 开发 Web Service 程序详解 #### 一、Web Service 概念与应用场景 Web Service 是一种跨编程语言和操作系统平台的远程调用技术。它允许不同语言编写的程序通过网络进行通信和数据交换。Web Service 的...

    AXIS开发Web Service.docx

    AXIS 是 Apache 开源项目提供的一款强大的 Web Service 引擎,用于开发和部署 Web Service。在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:...

    使用Axis开发Web Service程序

    ### 使用Axis开发Web Service程序 #### 一、概述 随着互联网技术的发展,Web Service作为一种标准的、基于XML的网络服务形式,在实现不同平台之间数据交换和应用集成方面扮演着重要角色。Axis作为Apache组织下的一...

    Axis开发Web Service的实例

    ### Axis开发Web Service的实例详解 #### 一、概述 在现代软件开发中,Web服务是一种重要的技术,它允许不同应用程序之间通过网络进行通信。Apache Axis是实现Web服务的一个流行框架,它支持SOAP协议,并提供了...

    JAVA高级开发:使用Axis开发Web Service

    为了更多喜爱开发的程序员也能迅速了解Web Service的开发,我这里整理了一些通过Axis开发Web Service的一些要点,希望能让不熟悉Web Service的开发人员能够迅速掌握Web Service。

    Axis开发Web Service程序教程

    【标题】: "Axis开发Web Service程序教程" 【描述】: "本文旨在引导读者通过AXIS框架体验Web服务的开发流程,适合已有Web服务基础的Java、XML开发者学习。" 【标签】: "axis webservice soap java" 【内容】: ...

    Axis2 Web Service 开发教程

    【Axis2 Web Service 开发教程...通过深入学习和实践【Axis2 Web Service 开发教程】,开发者不仅能熟练掌握使用Axis2开发Web服务的技能,还能对Web服务的原理和最佳实践有更深入的理解,从而在实际项目中更好地应用。

    MyEclipse下开发Web Service(Axis)

    接下来,通过一个简单实例——SayHello服务,了解使用Axis开发Web Service的全流程。 **2.1 WSDL编写** - 在MyEclipse中创建一个Web Project,命名为`SayHello`。 - 通过`File -&gt; New -&gt; Other -&gt; MyEclipse -&gt; ...

    Axis 开发Web Service(学习笔记)

    **Axis开发Web Service学习笔记** 在信息技术领域,Web服务是一种基于开放标准的互联网通信协议,允许不同的应用程序之间进行互操作。而Axis是Apache软件基金会的一个开源项目,它提供了一个强大的工具集,用于创建...

    基于Tomcat5.0和Axis2开发Web Service应用实例

    【标题】基于Tomcat5.0和Axis2开发Web Service应用实例 在Web服务的世界里,Axis2是一个高效且强大的工具,它允许开发者创建、部署和使用SOAP Web服务。本教程将详细介绍如何利用Apache Tomcat 5.0作为应用服务器,...

    axis2 web service完整教学

    【Apache Axis2 Web Service 教程】 Apache Axis2 是一个流行的开源Web服务框架,用于创建、部署和管理高性能的Web服务。本教程将详细介绍如何在Eclipse环境中利用Apache Axis2搭建Web服务及其客户端。 **环境配置...

    Axis2与Eclipse整合开发的Web Service的服务端

    开发Web Service服务端通常涉及到以下几个关键步骤: 1. **环境准备**: - 首先,你需要安装Eclipse的Java EE版本,确保具备开发Web应用的基础环境。 - 接着,访问Apache官方网站下载Axis2的最新稳定版,例如Axis...

    使用Eclipse的Axis1.4插件开发Web Service及客户端

    【使用Eclipse的Axis1.4插件开发Web Service及客户端】 在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4插件,无需额外安装。 Axis是一个开放源码的Web Service...

    MyEclipse下开发Web Service(Axis)2

    MyEclipse下开发Web Service(Axis)2 一、环境准备 在使用 Axis 开发 Web Service 时,需要准备 web 服务器和 Axis API。本文使用的 Web container 是 Tomcat5.5,Axis API 采用版本 2。为便于开发,需要 downloads...

Global site tag (gtag.js) - Google Analytics