axis2WebService开发指南.docx

上传人:b****6 文档编号:2774163 上传时间:2022-11-15 格式:DOCX 页数:57 大小:501.54KB
下载 相关 举报
axis2WebService开发指南.docx_第1页
第1页 / 共57页
axis2WebService开发指南.docx_第2页
第2页 / 共57页
axis2WebService开发指南.docx_第3页
第3页 / 共57页
axis2WebService开发指南.docx_第4页
第4页 / 共57页
axis2WebService开发指南.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

axis2WebService开发指南.docx

《axis2WebService开发指南.docx》由会员分享,可在线阅读,更多相关《axis2WebService开发指南.docx(57页珍藏版)》请在冰豆网上搜索。

axis2WebService开发指南.docx

axis2WebService开发指南

Axis的简单准备

Axis的入门实例

Axis复杂对象类型的WebService

Axis的辅助工具发布、调用WebService

AxisWebService会话Session的管理

Axis用控制台Dos命令发布WebService

Axis跨多个WebService管理Session

Axis用Spring的JavaBean发布WebService

Axis异步调用WebService

Axis的Module模块

Axis使用SoapMonitar监视WebService的请求和响应信息

Version1.02011-03-15

Axis2.xWebService

上次介绍了axis1.x的用法,这次继续上次的,将叙述axis2的用法。

Axis1.x在线博文:

:

//

一、准备工作

1、开发准备

首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。

下载地址:

:

//axis.apache.org/axis2/java/core/download.cgi

现在最高的版本是1.5.4的

然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。

下载页面:

:

//axis.apache.org/axis2/java/core/tools/index.html

ServiceArchiveWizard-EclipsePlug-in

CodeGeneratorWizard-EclipsePlug-in

2、安装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的项目。

Tomcat启动后,在浏览器中输入:

:

//localhost:

8080/axis2/你可以看到

二、Axis2的简单WebService示例

1、编写一个简单的WebService的服务器端代码,代码如下:

importjava.util.Random;

/**

*function:

WebServiceHelloWorld服务示例

*@authorhoojo

*@createDate2011-1-5下午03:

35:

06

*@fileHelloWorldService.java

*@packagecom.hoo.service

*@projectAxis2WebService

*@blog:

//

*@emailhoojo_@

*@version1.0

*/

publicclassHelloWorldService{

publicStringsayHello(Stringname){

returnname+"say:

hello[axis2]";

}

publicintgetAge(inti){

returni+newRandom().nextInt(100);

}

}

注意,上面的HelloWorldService是没有package的。

Copy这个类的class文件,放到tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。

如果没有pojo这个目录就手动创建一个一个文件夹。

然后在浏览器输入:

:

//localhost:

8080/axis2/

点击Services的链接就可以看到我们手动发布的HelloWorldService了,或者是浏览器地址栏输入:

:

//localhost:

8080/axis2/services/listServices

你就可以看到你刚才粘贴过去的这个WebService了。

点击链接就可以看到wsdl文件的内容了。

内容很多,如果你看过axis1.x的介绍就知道wsdl文件的大致结构了。

下面讲解下为什么要将class放在pojo文件夹下。

首先我们看看[tomcat_home]/webapps/axis2/WEB-INF/conf/axis2.xml

该文件中有这样一行代码:

.class的后缀文件放在目录pojo目录下。

2、测试这个WebService的方法

复制上面的HelloWorldService的链接地址,然后带上方法名称和参数值即可测试调用是否成功。

如下:

:

//localhost:

8080/axis2/services/HelloWorldService/sayHello?

name=jack

:

//localhost:

8080/axis2/services/HelloWorldService这个是WebService的地址

/sayHello是方法名称,?

name=jack是参数名称和值

在浏览器中输入上面的地址后,可以看到如下效果:

可以看到返回值,和方法名称。

ns:

sayHelloResponse是方法名称,所有的方法名称后都会带上Response,后面的ns当然是当前方法所在的类的包名了,这里没有package就是默认的axis2的域名。

同样,getAge方法,也是一样的调用方法。

:

//localhost:

8080/axis2/services/HelloWorldService/getAge?

i=22

结果如下:

3、下面我们看下客户端调用代码的编写,代码如下:

packagecom.hoo.service;

importjavax.xml.namespace.QName;

importorg.apache.axis2.AxisFault;

importorg.apache.axis2.addressing.EndpointReference;

importorg.apache.axis2.client.Options;

importorg.apache.axis2.rpc.client.RPCServiceClient;

/**

*function:

HelloWorldService客户端调用代码

*@authorhoojo

*@createDate2011-1-7下午03:

55:

05

*@fileHelloWorldClient.java

*@packagecom.hoo.service

*@projectAxis2WebService

*@blog:

//

*@emailhoojo_@

*@version1.0

*/

publicclassHelloWorldClient{

publicstaticvoidmain(String[]args)throwsAxisFault{

//RPCServiceClient是RPC方式调用

RPCServiceClientclient=newRPCServiceClient();

Optionsoptions=client.getOptions();

//设置调用WebService的URL

Stringaddress=":

//localhost:

8080/axis2/services/HelloWorldService";

EndpointReferenceepf=newEndpointReference(address);

options.setTo(epf);

/**

*设置将调用的方法,:

//ws.apache.org/axis2是方法

*默认(没有package)命名空间,如果有包名

*就是:

//包名倒过来即可

*sayHello就是方法名称了

*/

QNameqname=newQName(":

//ws.apache.org/axis2","sayHello");

//指定调用的方法和传递参数数据,及设置返回值的类型

Object[]result=client.invokeBlocking(qname,newObject[]{"jack"},newClass[]{String.class});

System.out.println(result[0]);

qname=newQName(":

//ws.apache.org/axis2","getAge");

result=client.invokeBlocking(qname,newObject[]{newInteger(22)},newClass[]{int.class});

System.out.println(result[0]);

}

}

如果你了解或是看过axis1.x的WebService,这里的客户端调用代码比较简单,有部分关键注释,这里就不多加赘述。

值得注意的是axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。

我们一般拿数组的第一个值,转换强转即可。

三、复杂对象类型的WebService

1、这次我们编写复杂点的WebService方法,返回的数据是我们定义属性带getter、setter方法JavaBean,一维数组、二维数组等。

看代码:

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.util.Random;

importdata.User;

/**

*function:

复杂类型数据的WebService:

字节数组、返回一维int数组、二维String数组及自定义JavaBean对象等

*@authorhoojo

*@createDate2011-1-13下午03:

34:

52

*@fileComplexTypeService.java

*@package

*@projectAxis2WebService

*@blog:

//

*@emailhoojo_@12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1