搜索
首页数据库mysql教程WebService学习笔记5AXIS2基础

1.AXIS2 简介: Apache Axis2 项目是一个基于 Java 语言的 Webservices 系统服务和客户端的实现。为了从 Apache Axis 1.0 中获取教训, Apache Axis2 提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与 Web services

 

1.AXIS2简介:

Apache Axis2项目是一个基于Java语言的Web services系统服务和客户端的实现。为了从Apache Axis 1.0中获取教训,Apache Axis2提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与Web services相关的说明和建议。Axis2可以让你很容易的执行以下任务:

(1).发送SOAP消息。

(2).接收和处理SOAP消息。

(3).从一个普通的Java类建立Web service

(4).WSDL来建立实现服务和客户端的实现类。

(5).很容易的从一个服务来获取WSDL

(6).发送和接收带有附件的SOAP消息。

(7).建立或者使用基于RESTWeb service

(8).建立或者使用从WS-SecurityWS-ReliableMessagingWS-AddressingWS-CoordinationWS-Atomic Transaction获取优势的服务。

(9).当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持。

2.配置AXIS2环境:

(1).下载Axis2,去http://ws.apache.org/axis2/下载axis2的最新版本,一般是两个zip文件,如axis2-1.4.1-bin.zip(包含了Axis2中所有的jar文件)axis2-1.4.1-war.zip(用于将WebService发布到web容器中)
(2).
axis2-1.4.1-war.zip解压,将目录中的axis2.war文件放到Servlet容器的项目发布目录中,以Tomcat为例,放到”%Tomcat%/webapps”目录中,启动Tomcat

(3).在浏览器地址栏中输入如下的URLhttp://localhost:8080/axis2/”,应该可以进入axis2的欢迎界面,点击”Validate”如果没有报错,则说明axis2的环境已经配置好。

(4).点击”Administration”,初始用户名和密码分别是:adminaxis2,也可以到” %Tomcat%/webapps/axis2/WEB-INF/conf/axis2.xml”下修改用户名和密码。

3.POJO发布成AXIS2 WebService的简单例子:

(1).编程普通的java类,将编译过后的”.class”文件拷贝到axis2POJO发布目录”%Tomcat%/webapps/axis2/WEB-INF/POJO”中。
注意:若目录下没有POJO目录,则手动新建该目录即可。

(2).启动TomcatPOJO即被发布成了WebServicejava类中中所有的public方法即被发布成WebServiceOperation

注意:POJO类不能使用package关键字声明包,AXIS2默认是热部署的。

4.POJO无配置发布高级:

由于AXIS2POJO发布方式不支持Package,若类中需要调用其他类的方法时,需要将所引用的类编译后的”.class”文件拷贝到”%Tomcat%/webapps/axis2/WEB-INF/classes”目录下。

5.AXIS2客户端的简单实现:

(1).使用RPC方式调用WebService

 

(2).指定调用WebServiceURL

 

(3).指定调用服务方法的参数值:

 

(4).指定方法返回值的数据类型,如:

 

(5).指定要调用方法名和WSDL文件的命名空间:

 

(6).调用服务的方法:

 

注意:当方法没有参数时,第二个参数值不能为null,而要使用new Object[]{}

当被调用的方法没有返回值时,应该使用RPCServiceClient类的invokeRobust方法。

6.使用wsdl2java简化客户端的编写:

Windows控制台输出如下的命令行来生成调用WebService的代码:

%AXIS2_HOME%/bin/wsdl2java –uri wsdlurl –p 生成java类的包名 -s –o 客户端存根目录名

其中-url参数指定wsdl文件的路径,可以说本地路径,也可以是网络路径。-p参数指定了生成的java类的包名,-o参数指定了生成的一系列文件保存的根目录。执行完命令后就会在当前目录下生成一个存根目录名的目录,里面就是wsdl2java生成的客户端代码。

7.AXIS2复合类型数据的传递:

AXIS2中可以直接使用将WebService方法的参数或返回值类型声明为数组或者类(接口)

注意:

(1).在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分割,如:

 

可以将该数组看作是一个3×3的二维数组。

(2).当传递自定义的类或接口时,请务必实现序列化。

8.使用services.xml方式发布WebService

(1).编写服务端的类。

(2).在工程META-INF目录下建services.xml文件,添加如下内容:

 

注意:有返回值的处理器为:org.apache.axis2.rpc.receivers.RPCMessageReceiver

无返回值的处理器为:org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver

(3).META-INF(包含services.xml)和编译好的类使用jar工具命令打包成”.aar”后缀名的文件。

(4).将打包的”.aar”文件发布到axis2的发布目录:%Tomcat%/webapps/axis2/WEB-INF/Services

注意:此种方法允许使用package

9.AXIS2使用DataHandler传输二进制文件:

(1).服务端:

 

(2).客户端:

 

10.AXIS2的状态管理:

(1).AXIS2管理WebService的状态基本上对开发人员是透明的,在WebService类需要使用org.apache,axis2.context.MessageContextorg.apache.axis2.context.ServiceContext类来保存与获取保存在服务端的状态信息,类似于使用HTTPSession接口的getAttributesetAttribute方法获得与设置Session属性。

(2).此外,还需修改services.xml文件的内容,为元素添加一个scope属性,该属性有4个可取的值:applicationsoapsessiontransportsessionrequest(全部小写,request是默认值)

其中transportsessionapplication分别实现同一个WebService类和跨WebService类的会话管理。

(3).在客户端需要使用setManageSession(true);打开session管理功能。

11.实现同一个WebServiceSession管理步骤:

(1).使用MessageContextServiceContext获取与设置Sessionkey-value对。

(2).为要进行session管理的WebService类在services.xml中所对应的元素添加一个scope属性,并将该属性值设置为”transportsession”

(3).在客户端使用setManageSession(true);打开Session管理功能。

12.WebServicesession管理操作代码:

(1).设置key-value

 

(2).获取value

 

(3).若用stub生成方式(进入axis2安装目录使用wsdl2java –uri wsdlURL –p 包名 –s –o 存放目录名),则需要添加”-serviceClient.getOptions().setManageSession(true);”

13.WebService跨服务会话管理:

在多个WebService服务之间共享会话状态,也称为跨服务会话管理,实现跨服务会话管理与实现同一个服务的会话管理类似,步骤如下:

(1).使用MessageContextServiceContext获取与设置Sessionkey-value对。

(2).为要进行session管理的WebService类在services.xml中所对应的元素添加一个scope属性,并将该属性值设置为”application”

(3).在客户端使用setManageSession(true);打开Session管理功能。

注意:java中只有将scope设置为application才支持跨服务的会话管理功能。

14.AXIS2Spring的集成:

(1).为工程添加Spring支持,在web.xml文件中添加spring的相关配置。

(2).spring配置文件中配置AXIS2ServiceBean如下:

 

(3).WEB-INF/services/下新建一个目录,这个名字可以起的随便,我们就起做test吧,然后在WEB-INF/services/test/下建立META-INF这个目录,最后在WEB-INF/services/test/META-INF/下建立service.xml,文件内容是:

 

15.AXIS2的异步调用WebService

同步调用时,如果被调用的WebService方法长时间没有返回,则客户端将一直处于阻塞状态,知道方法返回为止。为了避免长时间被阻塞,需要使用异步调用。AXIS2异步调用有两种方法:

(1).多线程。

(2).RPCServiceClient类提供了一个invokeNoBlocking()方法实现对WebService的异步调用。具体用法如下:

serviceClient.invokeNoBlocking(qname, parameters, 一个实现了AXISCallback接口的实例对象);

实现AXISCallback接口需要实现其如下4个方法,实现异步回调:

onComplete()onError(Exception e)onFault(MessageContext mc)onMessage(MessageContext mc)

注意:当使用wsdl2java生成客户端调用stub时,会自动生成服务名+CallbackHandler”的抽象回调类。

16.AXIS2的模块:

AXIS2可以通过模块(Module)进行扩展,AXIS2模块至少需要有两个类,这两个类分别实现了ModuleHandler接口,开发和使用一个AXIS2的模板步骤如下:

(1).编写实现了Module接口的类,AXIS2模块在进行初始化、销毁等动作时会自动调用该类中的相应方法。

(2).编写实现了Handler接口的类,该类是AXIS2模块的业务处理类。

(3).编写module.xml文件,该文件放在工程的META-INF目录下,用于配置模块。

(4).axis2.xml文件中配置AXIS2模块。

(5).services.xml文件中配置AXIS2模块的引用,模块名”/>

(6).发布AXIS2模块,需要使用jar命令将AXIS2模块打包成”.mar”后缀名包,然后将该后缀名为”.mar”的文件拷贝到AXIS2模块发布目录 %Tomcat%/webapps/axis2/WEB-INF/modules

注意:模块和Service要分开打包,将module类,handler类和module.xml打成”.mar”文件,将service类和services.xml文件打成”.aar”文件,分别发布。

 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在MySQL中使用视图的局限性是什么?在MySQL中使用视图的局限性是什么?May 14, 2025 am 12:10 AM

mysqlviewshavelimitations:1)他们不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinSorsubqueries.2)他们canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

确保您的MySQL数据库:添加用户并授予特权确保您的MySQL数据库:添加用户并授予特权May 14, 2025 am 12:09 AM

porthusermanagementInmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

哪些因素会影响我可以在MySQL中使用的触发器数量?哪些因素会影响我可以在MySQL中使用的触发器数量?May 14, 2025 am 12:08 AM

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)复杂的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

mysql:存储斑点安全吗?mysql:存储斑点安全吗?May 14, 2025 am 12:07 AM

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

mySQL:通过PHP Web界面添加用户mySQL:通过PHP Web界面添加用户May 14, 2025 am 12:04 AM

通过PHP网页界面添加MySQL用户可以使用MySQLi扩展。步骤如下:1.连接MySQL数据库,使用MySQLi扩展。2.创建用户,使用CREATEUSER语句,并使用PASSWORD()函数加密密码。3.防止SQL注入,使用mysqli_real_escape_string()函数处理用户输入。4.为新用户分配权限,使用GRANT语句。

mysql:blob和其他无-SQL存储,有什么区别?mysql:blob和其他无-SQL存储,有什么区别?May 13, 2025 am 12:14 AM

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而alenosqloptionslikemongodb,redis和calablesolutionsoluntionsoluntionsoluntionsolundortionsolunsolunsstructureddata.blobobobsimplobissimplobisslowderperformandperformanceperformancewithlararengelitiate;

mySQL添加用户:语法,选项和安全性最佳实践mySQL添加用户:语法,选项和安全性最佳实践May 13, 2025 am 12:12 AM

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

MySQL:如何避免字符串数据类型常见错误?MySQL:如何避免字符串数据类型常见错误?May 13, 2025 am 12:09 AM

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollat​​ionsEttingsefectery.1)usecharforfixed lengengters lengengtings,varchar forbariaible lengength,varchariable length,andtext/blobforlabforlargerdata.2 seterters seterters seterters seterters

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。