axis2配置手册
- 格式:docx
- 大小:354.01 KB
- 文档页数:44
A XIS2之WEBSERVICE新手超详细教程---------------尚明Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。
Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON 等技术,本教程是主要阐述如何构建一个基本的Axis2 webservice应用,里面的许多环节高手可直接略过,本教程完全针对新手。
一、环境安装安装myeclipse下载地址::///file/4238159/48030981-6b56-40a4-a93b-8f424ee4f33a安装mysql下载地址::///file/4238159/de64cf2f-4217-4e11-bb98-8e6c5dd24155安装mysql-workbench(mysql可视化工具)下载地址::///file/4238159/becf913f-56a6-4d68-b248-134113b73535安装tomcat下载地址::///file/4238159/ec6a2250-99ff-464e-a978-be184c96e4e7下载Axis2服务包下载地址::///file/4238159/bb3db6e3-2f7d-4343-b472-c1fa714dba95下载Axis2开发插件包下载地址::///file/4238159/aa39505f-079b-43be-9479-15a2d3e98cbb安装jdk下载地址::///file/4238159/7ba342f9-277f-4b9c-b5e7-b0c5b7dfc151二、环境配置1)Java环境配置a)设置JAVA_HOME图1.图2设置JAVA_HOME=D:\Program Files\Java\jdk1.6.0_10* D:\Program Files\Java\jdk1.6.0_10为笔者本机的JDK安装目录,请开发者根据实际安装路径来填写,注意环境变量最后面不能加分号,D:\Program Files\Java\jdk1.6.0_10;这么写是错误的。
中文原文英文原文概述这个说明文档涉及以下内容:?????如何使用?axis2?创建?web service?和客户端程序?????如何定制一个模块?(Module)?并在?web service?中使用它?????Samples discussion?????Advanced Topics第一部分:简介Axis2?是重新设计的一个架构,它没有基于?Axis1.*?的结构,这种新的架构?much more flexible, efficient and configurable?。
Axis2?的特性有:Speed:采用自己的对象模型,利用?StAX?解析Low memory foot print:Axis2?在设计过程中一直遵循?low memory cost?的理念AXIOM:采用自己的轻量级的对象模型,使得消息处理过程可扩展、性能高,对开发者来说更加简单。
Hot Deployment:Axis2?装备了在系统运行时部署服务和处理器的能力。
也就是说,新的服务新服务的添加不再需要重启服务器。
将服务的发布包放在服务部属文件夹中,部署模型将自动部署该服务。
Asynchronous Web Services:Axis2?现在可以通过?non-blocking clients and transports?支持异步的服务和异步的服务调用。
(?什么是异步的服务???)MEP Support:Axis2?具备良好的伸缩性来支持?MEPs?,因为它内置了对?WSDL2.0?中?MEPs?的支持。
Flexibility:Axis2?的架构使得程序员能自由的对?Axis?添加扩展,这些扩展包括对自定义?Header?的处理,系统管理,甚至是任何一件你可以想象的到的事情Stability:Axis2?定义了一套公共接口,这些接口相对于其他代码而言改动很小Component-oriented Deployment:你可以自定义一些在处理过程中常用的可重用的处理器,并可以将这些处理器发布出来供其它人使用Transport Framework:定义了一个干净、简单的抽象作品来集成任意的传输协议,引擎的核心部分的实现是与传输协议无关的Add-ons:一些?web service?相关的协议也合并了进来。
Axis2 + Tomcat5 + Java Eclipse + JDK 5 配置方法一、版本:主件:Axis:本例用Axis 2.1.5.4Tomcat:本例用Apache Tomcat 5.5.33Java Eclipse:Eclipse IDE for J2EEJDK:JDK 1.5(5.0)其它:Sysdeo Tomcat Plug-in:本例使用Tomcat Plug-in 3.3下载tomcatPluginV33.zipAxis2 Code Generator Wizard Plug-in 和Axis2 Service Archive Wizard Plug-in二、配置过程:1、下载Eclipse、Tomcat 5.5、Axis2 Binary 包后解压放到F:/Program Files 下2、下载JDK 后安装到F:/Program Files/Java 下3、将三个Plug-in 包解压放入%Eclipse%/dropins 下4、下载Axis2 WAR 包解压,其中Axis2.war 文件放入%Tomcat%/webapps 下,打开Eclipse,启动Tomcat,而后在%Tomcat% 目录下看到生成的axis2 文件夹,删除Axis2.war5、配置环境变量(系统属性--> 高级--> 环境变量):a) 键:AXIS2_HOME值:F:/Program Files/axis2-1-5-4b) 键:CLASS_PATH值(填写时不加回车):.;%JAVA_HOME%/lib;F:/Program Files/apache-tomcat-5.5.33/webapps/axis2/WEB-INF/lib;c) 键:JAVA_HOME值:F:/Program Files/Java/jdk1.5.0_22d) 键:Path值添:F:/Program Files/axis2-1-5-4/bin;F:/Program Files/Java/jdk1.5.0_22/bin;6、配置Eclipse:a) Window -> Preferences -> Tomcat,version 选5.x,Tomcat home 为F:/Program Files/apache-tomcat-5.5.33b) Window -> Preferences -> Tomcat -> JVM Settings 中,JRE 选jre1.5c) Window -> Preferences -> Java -> Build Path -> User Libraries 中,New 一项Axis2,后Add JARs,将F:/Program Files/axis2-1-5-4/lib 下所有项添加d) Window -> Preferences -> Java -> Installed JREs 中,选jre1.57、配置Tomcat 用户:F:/Program Files/apache-tomcat-5.5.33/conf/ tomcat-users.xml,要求在<tomcat-users> 键下有<role rolename="manager"/><role rolename="admin"/><user username="libo" password="hikaliv"roles="admin,manager"/>更改并保存三、调试:1、打开Eclipse,File -> New -> Other 中出现Axis2 Wizards2、启动Tomcat,浏览器中http://127.0.0.1:8080/,点击Tomcat Manager,可以libo / hikaliv 登录3、浏览器中http://127.0.0.1:8080/axis2/,点击Validate,没有红字报错;点击Services 可查看当前正在运行的服务4、通过cmd 下ipconfig 命令可查看当前主机ipv4 地址。
Axis2配置指南(翻译)关键字: Axis2In Axis2, there are three kinds of configuration files to configure the system. The first one is to configure the whole system (global configuration), the second one is to configure a service (service configuration), and the third one is to configure a module (module configuration). This document explains the above configurations in detail.在Aixs2中,有三个文件可以用来配置系统。
第一个配置整个系统(全局配置),第二个配置一个服务(服务配置),第三个配置一个模块(模块配置)。
本文档详细介绍上面的配置。
内容全局配置(axis2.xml)服务配置(services.xml)模块配置(module.xml)全局配置书写axis2.xml所有在启动axis2时需要的配置信息都从axis2.xml中取得。
指明它们的方法非常简单和容易。
此部分都是关于如何在axis2中以合适的方式指定配置信息的,在配置文件中可以看到六个顶级元素,如下:ParameterTransport ReceiverTransport SenderPhase OrderModule ReferencesListeners (Observers)Parameter:在Axis2中,parameter(参数)就是一个名-值对,axis2.xml中的每个顶级parameter元素将都被转换成AxisConfiguration中的属性,因此,配置文档中的顶级参数都可以在运行时环境中通过AxisConfiguration得到。
使用Apache Axis2创建Web Service1、环境搭建●下载并安装jdk1.6●下载并安装tomcat6.0●下载并安装eclipse-jee-indigo●下载并解压apache axis2-1.5.22、Eclipse环境配置●设置jdk : Preferences —> Java —> Installed JRES●设置tomcat : Preferences —> Server —> Runtime Enviroments●设置Axis2 Runtime: Preferences —> Web Services —> Axis2Preferences —> Axis2 Runtime 指定为apache axis2的根路径●Preferences —> Web Services —> Server and Runtime 设置Web services runtime为Apache Axis23、简单web service示例开发(server)●打开server视图,添加tomcat服务器●设置HTTP/1.1的端口为:8089●创建Dynamic Web Project,修改configuration,选中Axis2 Web Services即可。
●新建一个class Caculate,进行加法和减法运算。
●选中Caculate类右键新建一个web service,根据向导一步一步完成即可。
如下图所示:选中publish the web service和monitor the web service点击start server,启动tomcat服务器点击finish,整个web service创建及部署成功。
测试:http://localhost:8089/WS_02/services/Caculate?wsdl 打开web service explorer,选择WSDL page,输入WSDL URL,如下图所示:测试结果:4、总结:开发过程中容易出现的问题:Failed while installing Axis2 Web Services Core 1.1出现上述问题的原因:eclipse的Bug,更换eclipse版本即可解决问题。
1.软件准备:一下软件版本为本人使用版本Myeclipse 9.0Tomcat 6.0Jdk 6以下两项为myeclipse插件axis2-eclipse-codegen-plugin-1.6.0.zipaxis2-eclipse-service-plugin-1.6.0.zip以下zip包为tomcat插件axis2-1.6.0-war.zipaxis2中的jar,在客户端开发中需要用到这些jar包axis2-1.6.0-bin.zip2. myeclipse插件安装将axis2-eclipse-codegen-plugin-1.6.0.zip和axis2-eclipse-service-plugin-1.6.0.zip解压D:\Users\Administrator\AppData\Local\MyEclipse为我的myeclipse安装的根目录将解压后的plugins中的jar包复制到myeclipse的安装目录下的common中的plugins中(只需jar包即可)如:D:\Users\Administrator\AppData\Local\MyEclipse\Common\plugins进入到myeclipse安装目录中的org.eclipse.equinox.simpleconfigurator中,如下:D:\Users\Administrator\AppData\Local\MyEclipse\MyEclipse9\configuration\org.eclipse.equinox.simpleconfigurator用记事本打开org.eclipse.equinox.simpleconfigurator 中的文件项文件中添加下面内容org.apache.axis2.eclipse.codegen.plugin,1.6.0,file:/d:/Users/Administrator/AppData/Local/MyEcli pse/Common/plugins/org.apache.axis2.eclipse.codegen.plugin_1.6.0.jar,4,falseorg.apache.axis2.eclipse.service.plugin,1.6.0,file:/d:/Users/Administrator/AppData/Local/MyEclip se/Common/plugins/org.apache.axis2.eclipse.service.plugin_1.6.0.jar,4,false启动myeclipse后点击新建 other后如果能看到Axis2 Wizards文件夹下有两个内容表示安装成功。
Axis2,CXF,xifire1. Axis2.x (3)1.1. 开发准备工作 (3)1.1.1. 环境 (3)1.1.2. 单独启动AXIS2服务 (4)1.1.3. 将axis2-1.6.2-bin.zip中的项目打成axis2.war包 (4)1.1.4. Axis2脚本 (5)1.1.5. 安装eclipse插件(可选) (7)1.1.6. axis2-bin文件目录结构 (8)1.1.7. 部署axis2.war到tomcat (8)1.1.8. 上传services(Uploading Services) (9)1.2. Axis2开发部署 (9)1.2.1. 编写服务器代码,和配置文件 (10)1.2.2. 发布 (11)1.2.3. 通过class文件生成wsdl文件(java2wsdl) (13)1.2.4. 通过wsdl文件生成Java访问代码(wsdl2java) (13)1.2.5. 调用:Axis2开发WebService客户端的3种方式 (14)1.2.6. PS:配置文件介绍 (21)1.3. 大病系统ESB接口开发 (25)1.3.1. esb接口标准 (26)1.3.2. esb接口开发 (31)1.3.3. esb接口调试测试 (53)1.3.4. esb接口发布 (53)2. CXF (53)2.1. 准备工作 (54)2.2. 开发示例 (54)2.2.1. 编写服务端接口 (55)2.2.2. 编写服务实现 (56)2.2.3. 编写webServiceApp.java类来暴露web服务 (57)2.2.4. 启动服务 (57)2.2.5. 编写客户端访问服务 (57)2.2.6. 测试 (58)2.2.7. 集成到spring (58)2.2.8. 通过wsdl文件生成客户端和服务器端代码 (61)3. xfire (62)3.1. 准备工作 (62)3.2. 开发步骤 (62)3.2.1. 建立目录结构 (62)3.2.2. 添加依赖包 (63)3.2.3. 编写服务端代码 (63)3.2.4. 配置web.xml (66)3.2.5. 创建xfire配置文件 (67)3.2.6. services.xml的作用 (68)3.2.7. 在服务器上运行服务 (69)4. Axis与XFire的比较 (72)4.1. XFire与Axis1性能的比较 (72)4.2. XFire与Axis2的比较 (72)5. cxf与axis2比较 (73)6. WSDL文件 (74)6.1. 抽象定义 (74)6.2. 具体定义 (74)7. JAXB (76)7.1. Java SE中的JAXB (76)7.2. 使用 (77)7.3. 缺省的数据类型绑定 (77)7.4. 代码示例 (78)1.Axis2.xWeb Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构)。
一.在Eclipse中配置Axis2插件。
1.下载Axis2插件(Axis2官网:/axis2/java/core/download.html)2. 配置Eclipse Axis2插件把axis2-eclipse-codegen-plugin-1.7.1.zip和axis2-eclipse-service-plugin-1.7.1.zip文件里面的jar文件解压出来,放到eclipse目录下的dropins文件夹下,并新建一个txt文件,写入dropins目录的绝对路径,保存后更改文件格式为.link。
重启Eclipse,然后点击File-> New->Other->Axis2 Wizards即可看到axis2功能是否配置成功。
二.用Eclipse开发Axis2服务端1.解压axis2-1.7.1-bin.zip和axis2-1.7.1-war.zip文件,axis2-1.7.1-bin的解压文件夹随便放在一个目录下即可,axis2-1.7.1-war解压后的axis2.war文件放在tomcat目录的webapp文件夹下。
启动tomcat并输入http://localhost:8080/axis2即可看到如下画面。
2.新建Java Project,目录如下图所示(该示例主要展示了如何把配置文件也打包进aar文件),把axis2-1.7.1-bin的lib目录下的全部.jar文件(其实这些包是给客户端使用的,而且只需要其中一部分即可,为了方便才全部复制)全部复制到lib目录下,然后build path进项目中,建立如下文件:com.axis.server包下的文件AxisServer.java和User.java;resources 包下的文件application.properties。
3.生成aar文件:File->New->Other->Axis2 Wizards->Axis2 Service Archiver,并按下图流程进行即可生成aar文件。
搭建WebService操作手册2010-10-25修订记录1.引言 (4)1.1 目的 (4)1.2 为什么要使用WebService (4)1.3 什么是WebService (4)1.4 WebService WSDL SOAP关系 (5)1.5 Web Service服务器工作流程 (5)1.6 Web Service客户端工作流程 (6)2.系统所需环境 (6)3.构建WebService服务器 (6)3.1 使用AXIS2构建WebService服务器 (6)3.1.1 POJO方式 (6)3.1.2 使用框架构建webservice (11)3.1.3 使用独立安装模式 (20)4. 构建WebService客户端 (21)4.1.1 使用插件创建WebService客户端 (21)1.引言1.1 目的本操作手册具体介绍了WebService的工作原理并详细描述了使用axis2构建WebService的流程,主要面向刚刚接触WebService的开发人员。
1.2 为什么要使用WebServiceWebService是一个新的概念,它并不是微软首先提出的,但是微软的dotnet战略让它最广泛的发挥它的潜能。
也许它流行的根本原因并不是微软,也许是因为带宽与存储量的飞速发展,但是dotnet战略确实起到了很大的作用,令它能够在更加广泛的开发平台上施展。
dotnet战略领导着微软前进,微软为了dotnet计划也花费了近300亿美元。
为什么?因为微软要它的理念、方式不但在单机软件,甚至在Internet上也被最广泛的认同。
WebService 最早被应用在Sun等对网络先知先觉的平台上,并且在苦苦的期待发展。
而J2EE是最早的成功开发WebService的平台,它的理念就是在网上最广泛的传播、使用,成为一种真正的服务。
当微软的dotnet计划即将实施的时候,微软也开始发掘WebService的潜力。
Apache Axis2 插件安装以及实现WebService接口一、Eclipse安装Axis2插件及应用1、环境准备:Eclipse – j2ee需要的Axis2压缩包文件解压后的文件名为 axis2-1.4.1目录解压后的文件结构如图:2、配置EclipseEclipse自带了开发WebService的工具第一步:打开Eclipse-->点击菜单windows-->Preferences-->WebServices-->Axis2Preferences-->设置Axis2 runtimelocation为Axis2下载后并解压的核心包的位置:选择后Eclipse会自动检测包是否正确。
如果successfully提示表示设置正确第二步:在Eclipse创建一个WebProject时,点击Configuration的Modify会出现下图界面:勾选Axis2 Web Services按OK。
回到新建WebProject界面,完成项目创建。
创建成功后会发现在WEB-INF文件夹下会多出一个axis2-web的文件夹,这个是Axis2的项目文件夹。
现在启动服务器会抛出异常,这是因为Eclipse在自动加载生成该项目时有几个问题需要手动修复,下面分别列出:问题一:会抛出异常:ng.ClassNotFoundException:org.apache.axis2.transport.http.AxisAdminServlet 是因为生动生成的web.xml文件中所指定的AxisAdminServlet包路径有错。
自动生成的源码如下:注意红色字体部分,我们可以去看一下所下载的Axis2的源包。
AxisAdminServlet类所在的包路径并不在下列这个路径中org.apache.axis2.transport.http,该类是属于包org.apache.axis2.webapp下。
一、Axis2的下载和安装下载地址: /axis2/java/core/download.cgi 本次使用的版本是1.5.5下载两个zip包:axis2-1.5.5-bin.zip和axis2-1.5.5-war.zip将axis2-1.5.5-war.zip文件解压到相应目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中,并启动Tomcat.在浏览器里输入URL:http://localhost:8080/axis2/如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。
二、编写和发布WebService对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。
在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
其中POJO中所有的public方法将被发布成WebService方法。
下面是一个简单的POJO,代码如下:public class SimpleService{public String getGreeting(String name){return "你好 " + name;}public int getPrice(){return new java.util.Random().nextInt(1000);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。
编译SimpleService类后,将SimpleService.class文件放到<Tomcat安装目录>\webapps\axis2\WEB-INF\pojo目录中(如果没有pojo目录,则建立该目录)。
现在我们已经成功将SimpleService类发布成了WebService。
axis2配置一、环境准备1.1软件下载准备Tomcat 5.5下载地址:/download-55.cgi#5.5.20Axis War包:/apache/ws/axis2/1_1_1/axis2.warAxis Eclipse plug-in(代码生成工具和打包工具):/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard.zip1.2安装A.将下载到的Axis 的两个plug-in解压缩到$eclipse_home$\plugins目录下。
重新启动eclipse后,点”文件->新建->其他”或ctrl+N会出现下图:B.将axis2.war包拷贝到tomcat安装目录下的webapps目录。
C. 启动Tomcat,打开浏览器输入并访问:http://127.0.0.1:8080/axis2来查看,结果如下图,表示axis2已经工作正常。
如图:二、快速开始2.1创建webApps项目启动MyEclipse,新建立一个WebApps(File->New->Project->Web Project),给Project Name 为SayHello,其他保持不改变。
2.2创建WSDL文件A.选择File->New-Other菜单,进入后找到MyEclipse->Web Services并选择WSDL.如下图:<!--[if !vml]--><!--[endif]--> B.点击下一步按钮,显示如下图:D. 下一步》所有界面内容取默认值,如图完成E.显示WSDL设计器的界面如下:红色的手动修改,蓝色自动转换。
F.修改图中标红色的部分:修改图中的NewOperation为SayHello;修改input中parameters为SayHelloRequest;修改output中parameters为SayHelloResponse;修改完后如下图:红色框内为变化的内容,WSDL文件修改完毕。
Axis2 WebServiceAxis的简单准备Axis的入门实例Axis复杂对象类型的WebServiceAxis的辅助工具发布、调用WebServiceAxis WebService会话Session的管理Axis用控制台Dos命令发布WebServiceAxis跨多个WebService管理SessionAxis用Spring的JavaBean发布WebServiceAxis异步调用WebServiceAxis 的Module模块Axis使用SoapMonitar监视WebService的请求和响应信息一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
Axis2 体系结构部署模块Axis2采用xml 文件方式来配置管理,并使用了本身的Axiom 来读取配置文件。
Axis2通过部署模块中的日程管理器(Scheduler),定时通知部署文件监听器(Listener),定时查看更新状况并实时更新系统,这样的处理方式使Axis2可以在运行时部署新的Service,称为“热部署”,而且在不需要重启Axis2的基础上更新已部署的Service,称为“热更新”。
WSDL与代码生成WSDL(Web Services Description Language)是一个基于XML的语言,用于描述Service及其函数、参数和返回值,因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
Axis2提供了工具(WSDL2C Tool),可以根据WSDL文件自动生成客户端和服务器框架代码。
信息处理模型Axis2定义了一个处理信息的摸型,所有的状态都保存在这个层次的机构模型中,该模型定义了两种用于存放状态的类。
一种为Description 类存放本质上是静态的且存在于Axis 引擎实例的整个生命周期中的数据(如传输、服务和操作的配置)。
一种为Context 类存放调用上下文中有效的服务和操作的动态信息,例如当前请求和响应SOAP 消息、From 地址、T o 地址和其他元素。
SOAP处理模型SOAP 请求消息流到达服务器之后,会经过一系列处理程序,这些处理程序组成了一个集合,共同完成一次Service的调用。
这些处理程序形成了一个管道(或流),Axis2 引擎的传入消息会通过InPipe。
所有传出消息都会通过OutPipe。
XML处理模型AXIOMAxis2 引入了一个名为AXIOM 的新模型,用于处理SOAP 消息。
AXIOM 使用StAX (Streaming API for XML) 来解析XML。
StAX 是一个标准的流式Pull 解析器Java™ API。
用Axis2实现Web Service,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中。
这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成Web Service。
先实现一个POJO类,代码如下:package service;public class MyService{public String get Greeting(String name){return "您好 " + name;}public void update(String data){System.out.println("<" + data + ">已经更新");}}这个类有两个方法,这两个方法都需要发布成Web Service方法。
这种方式和直接放在pojo目录中的POJO类不同。
要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:<service nam e="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</parameter><messageReceivers><m essageReceiver m ep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> <m essageReceiver m ep="/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </messageReceivers></service>其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService 的WSDL内容:http://localhost:8080/axis2/services/m yService?wsdl其中name属性名就是上面URL中"?"和"/"之间的部分。
<description>元素表示当前Web Service的描述,<parameter>元素用于设置WebService的参数,在这里用于设置WebService对应的类名。
在这里最值得注意的是<messageReceivers>元素,该元素用于设置处理WebService方法的处理器。
例如,getGreeting方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver 类,而update方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver 类。
使用这种方式发布WebService,必须打包成.aar文件,..aar文件实际上就是改变了扩展名的.jar文件。
在现在建立了两个文件:MyService.java和services.xml。
将MyService.java编译,生成MyService.class。
services.xml和MyService.class文件的位置如下:D:\ws\service\MyService.classD:\ws\META-INF\services.xml在windows控制台中进入ws目录,并输入如下的命令生成.aar文件(实际上,.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice):jar cvf ws.aar .最后将ws.aar文件复制到<Tom cat安装目录>\webapps\axis2\WEB-INF\services目录中,启动Tom cat后,就可以调用这个WebService了。
调用的方法和《WebService大讲堂之Axis2(1):用POJO实现0配置的WebService》所讲的方法类似。
另外services.xml文件中也可以直接指定WebService类的方法,如可以用下面的配置代码来发布WebService:<service nam e="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</parameter><operation name="getGreeting"><m essageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageRecei ver"/></operation><operation name="update"><m essageReceiverclass="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </operation></service>上面的配置代码前面的部分和以前的services.xml文件的内容相同,但后面使用了<operation>元素来指定每一个WebService方法,并单独指定了处理每一个方法的处理器。
对于客户端来说,调用使用这两个services.xml文件发布的WebService并没有太大我区别,只是使用第二个services.xml文件发布WebServices后,在使用wsdl2java命令或使用C#、delphi等生成客户端的stub时,update方法的String类型被封装在了update类中,在传递update方法的参数时需要建立update类的对象实例。
而使用第一个services.xml文件发布的WebService在生成stub时直接可以为update方法传递String类型的参数。
从这一点可以看出,这两种方法生成的WSDL有一定的区别。
但实际上,如果客户端程序使用第一个services.xml文件发布的WebService生成stub类时(这时update方法的参数是String),在服务端又改为第二个services.xml文件来发布WebService,这时客户端并不需要再重新生成stub类,而可以直接调用update方法。
也就是说,服务端使用什么样的方式发布WebService,对客户端并没有影响。
如果想发布多个WebService,可以使用<serviceGroup>元素,如再建立一个MyService1类,代码如下:package servicepublic class MyService1{public String getName(){return "bill";}}在services.xml文件中可以使用如下的配置代码来配置MyService和MyService1类:<serviceGroup><service nam e="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</param eter><messageReceivers><messageReceiver m ep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/><messageReceiver m ep="/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </messageReceivers></service><service nam e="myService1"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService1</parameter><messageReceivers><m essageReceiver m ep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/><m essageReceiver m ep="/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </messageReceivers></service></serviceGroup>在《WebService大讲堂之Axis2(2):复合类型数据的传递》中讲过,如果要传递二进制文件(如图像、音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式进行调用。