AXIS2代码示例详解-HelloWorld.doc_第1页
AXIS2代码示例详解-HelloWorld.doc_第2页
AXIS2代码示例详解-HelloWorld.doc_第3页
AXIS2代码示例详解-HelloWorld.doc_第4页
AXIS2代码示例详解-HelloWorld.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/countrymusic文章引用自: ZJHelloWorld!文将介绍如何使用Tomcat5.0和Apache Axis2开发、部署及测试一个简单的Web Service应用。1工作环境Eclipse 3.1.2+Lomboz+jdk1.5+ apache-tomcat-5.0.18+AXIS2:1.0(war版本和bin版本)在/axis2/download/1_0/download.cgi页面下,下载AXIS2的Binary Distribution url: /ws/axis2/1_0/axis2-std-1.0-bin.zip和war Distribution url: /ws/axis2/1_0/axis2-1.0-docs.zip。把这两个文件解压,比如解压缩的后得目录为C:axis2-std-1.0-bin和C:axis2.war。在Eclipse下通过菜单windowpreferences-JavaBuild PathUser Libraries 新建一个user library,比如名字就叫axis2把C:axis2-std-1.0-binlib下的所有jar文件包含进来。把axis2.war拷贝到%TOMCAT-HOME%/webapps下面。2检验安装在Eclipse下启动Tomcat,在地址栏内输入http:/localhost:8080/axis2/。点击Validate,将到达 Axis2 Happiness Page。3WebService中的HelloWorld1)新建一个动态web工程,取名ZZaxis,右键点击项目名,选择Properties-Java Build Path-Add Library-User Library-axis2。2)新建package sample,建立HelloWorld.java,代码如下。HelloWorld.javaimport org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;public class HelloWorld public OMElement sayHello(OMElement in)String name=in.getText();String info=name+HelloWorld!;OMFactory fac=OMAbstractFactory.getOMFactory();OMNamespace omNs=fac.createOMNamespace(/,hw);OMElement resp=fac.createOMElement(sayHelloResponse,omNs);resp.setText(info);return resp;3)在WebContentMETA-INF建立services.xml,代码如下。services.xmlThis is a sample Web Service.sample.HelloWorld4)将目录sample和目录META-INF组织如下(新建目录example)。+-example|- +-sample|- HelloWorld.class|-+-META-INF|- services.xml5)打包生成aar文件。在命令符环境下,将当前目录转到example。jar cvf HelloWorld.aar . /注意最后一个点,在当前目录下生成HelloWorld.aar。6)在Eclipse中启动Tomcat,在地址栏下键入http:/localhost:8080/axis2/。选择Administration,输入用户名admin,密码axis2。选择左侧工具栏Tools- Upload Service,上传之前打包的HelloWorld.aar。该文件将在/webapps/axis2WEB-INFservices目录下。7)编写客户端检验代码。新建Java Project,取名为ZZaxisClient。右键点击项目名,选择Properties-Java Build Path-Add Library-User Library-axis2。8)新建package example.client。建立TestClient.java,代码如下。TestClient.javapackage example.client;import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.client.ServiceClient;public class TestClient private static EndpointReference targetEPR=new EndpointReference(http:/localhost:8080/axis2/services/HelloWorld);public static OMElement getSayHelloOMElement()OMFactory fac=OMAbstractFactory.getOMFactory();OMNamespace omNs=fac.createOMNamespace(/,hw);OMElement method=fac.createOMElement(sayHello,omNs);method.setText(ZJ);return method;public static void main(String args)tryOptions options=new Options();options.setTo(targetEPR);ServiceClient sender=new ServiceClient();sender.setOptions(options);OMElement sayHello=TestClient.getSayHelloOMElement();OMElement result=sender.sendReceive(sayHello);System.out.println(result);catch(Exception axisFault)axisFault.printStackTrace();9)测试,run TestClient.java as Java Application。结果:ZJHelloWorld!AXIS2 代码示例详解1HelloWorld做了些什么?HelloWorld功能非常简单,在客户端输入你的姓名,本例中为ZJ。参数传递到服务器端后,经过处理将返回name+HelloWorld!,本例中为ZJ HelloWorld!2服务器端文件HelloWorld.javaHelloWorld.javapackage sample;import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;public class HelloWorld /读取client端getSayHelloOMElement()方法传递的参数in。public OMElement sayHello(OMElement in)/将in转换为String。String name=in.getText();String info=name+HelloWorld!;/创建response SOAP包。OMFactory fac=OMAbstractFactory.getOMFactory();/ OMNamespace指定此SOAP文档名称空间。OMNamespace omNs=fac.createOMNamespace(/,hw);/创建元素sayHello,并指定其在omNs指代的名称空间中。OMElement resp=fac.createOMElement(sayHelloResponse,omNs);/指定元素的文本内容。resp.setText(info);return resp;3services.xml部署文件services.xml/下面定义服务名This is a sample Web Service./ ServiceClass指定Java Class的位置,即实现服务的类。sample.HelloWorld/ operation 与Java Class中方法名对应。/ messageReceiver看下文注解。注解:消息交换模式。目前Axis2支持三种模式:In-Only、Robust-In和In-Out。In-Only消息交换模式只有SOAP请求,而不需要应答;Robust-In消息交换模式发送SOAP请求,只有在出错的情况下才返回应答;In-Out消息交换模式总是存在SOAP请求和应答。本例使用In-Out模式。 文章引用自: 4客户端文件TestClient.javaTestClient.javapackage example.client;import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.client.ServiceClient;public class TestClient / targetEPR指定打包的Service(.aar文件)在容器中的物理位置。private static EndpointReference targetEPR=new EndpointReference(http:/localhost:8080/axis2/services/HelloWorld);public static OMElement getSayHelloOMElement()/创建request SOAP包。OMFactory fac=OMAbstractFactory.getOMFactory();/ OMNamespace指定此SOAP文档名称空间。OMNamespace omNs=fac.createOMNamespace(/,hw);/创建元素sayHello,并指定其在omNs指代的名称空间中。OMElement method=fac.createOMElement(sayHello,omNs);/指定元素的文本内容。method.setText(ZJ);return method;public static void main(String args)tryOptions options=new Options();options.setTo(targetEPR);ServiceClient sender=new ServiceClient();sender.setOptions(options);OMElement sayHello=TestClient.getSayHelloOMElement();/发出request SOAP,/同时将得到的远端由sayHello方法返回的信息保存到result。/通过services.xml能准确找到sayHello方法所在的文件。OMElement result=sender.sendReceive(sayHello);catch(Exception axisFault)axisFault.printStackTrace(); 5Axis2简介Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。Axis2的主要特点有:1)采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供的灵活性按需构造对象模型。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论