首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Axis2公布调用webService笔记_1

2013-05-02 
Axis2发布调用webService笔记_1?? 说名:项目中需要用到webservice的发布和调用,在网上找了一些资料总算是

Axis2发布调用webService笔记_1
?? 说名:项目中需要用到webservice的发布和调用,在网上找了一些资料总算是弄出来了,现将发布和调用做下简单总结。

axis2-1.4.1-war.zip:放到tomcate的文件

axis2-1.4.1-bin.zip:通过命令行生成测试代码


?

下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other….如果安装正确你会看到:


Axis2公布调用webService笔记_1
?

?????? package com.deltaj.server;

?

publicclass SimpleServer {

??? /**

??? ?*简单的测试方法

??? ?*/

??? public String simpleMethod(String name) {

?????? ??? return name + "Say this is a Simple method ^-^";

??? ??? }

}


Axis2公布调用webService笔记_1
?


Axis2公布调用webService笔记_1
?


Axis2公布调用webService笔记_1
?


?

?5、点击next之后,进入的是选择xml页面,这里我们选择的是自动生成xml,也就是勾选 Generate the service xml automatically这一项


Axis2公布调用webService笔记_1
?

6、点击next之后,进入的是生成xml文件的页面,在service name 里填写这个服务所起的名字,这里我起名为simpleServer,然后在class name 中填写要发布的类,这里一定要写全路径,写好后就可以点击load 按钮,如果一切ok的话,你会看到如下画面(这里是找需要发布的class文件,接着上面第2步的路径继续配置就能找到文件,要是出现Error :Classfoundcom.deltaj.server.SimpleServe 就是路劲配置错误)

????
Axis2公布调用webService笔记_1
?


?

8、点击finish ,如果看到如下的画面,说名发布成功啦。

???
Axis2公布调用webService笔记_1
?

9、接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat目录中的axis2项目的service目录中位置如图。

???
Axis2公布调用webService笔记_1
?

10、接下来启动tomcat,在地址栏中输入http://localhost:8080/axis2 ?,你会看到axis2的欢迎画Axis2公布调用webService笔记_1

11、点击Services连接,你会看到发布的服务列表。这里面就能看到我们发布的simpleService


Axis2公布调用webService笔记_1
?

12、点击我们的服务simpleServer的连接,我们会看到。至此,服务发布成功。
Axis2公布调用webService笔记_1
?

我们看到自己的发布了一个webservice,那么下一步,自然是想测试下如何来调用它。

?

第三步,使用插件生成简化测试代码。(这里没有成功,改用密令行实现)


Axis2公布调用webService笔记_1
?


Axis2公布调用webService笔记_1
?


Axis2公布调用webService笔记_1
?

4、.点击next,进入设置页面,这里我们就用默认的设置。


Axis2公布调用webService笔记_1
?

5、点击next,选择输出文件的路径。


Axis2公布调用webService笔记_1
?

6、点击next,如果看到这个页面,说名生成代码成功。


Axis2公布调用webService笔记_1
?

然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。这个是因为这个插件有个小bug。

生成的代码没有实现序列化方法。我们可以自己来加上,在小红叉上点一下,弹出一个小菜单,选择Add unimplemented methods .



Axis2公布调用webService笔记_1
?

?

??? /**

??? ?*调用发布的服务。

??? ?*/

??? publicclass SimpleClient {

?????? publicstaticvoid main(String[] args) throws Exception {

?????????? // 初始化桩文件

?????????? SimpleServerStub stub = new SimpleServerStub();

?????????? // 初始化SimpleMethod方法。

?????????? SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();

?????????? // 调用simpleMethod的setName方法。

?????????? request.setName("zt");

?????????? //? ??? System.out.println(stub.simpleMethod(request).get_return());

?????? }

??? }

?

如果一切正常,你就会看到结果

可惜我没有那么幸运,通过这种向导的方式, 我遇到了不少人都遇到的一个异常,An error ocurred while completing process??? -java.lang.reflect.InvocationTargetException。看到一些人的解决方案,我试着做了,依然不行。 关闭 Eclipse
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到下列 folder
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

??? 执行 Eclipse 即可,若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6

G:\axis2-1.4.1\bin>wsdl2java -uri http://localhost:8080/axis2/services/simpleServer?wsdl -o D:\tt

如果出现:
Using AXIS2_HOME:?? C:\soa\axis2
Using JAVA_HOME:??? E:\Program Files\Java\jdk1.6
Retrieving document at 'http://219.237.203.117/cws/cws.asmx?WSDL'.

这三行后,在指定的目录中找到生成的两个java文件, 终于长舒一口气。剩下的就是写main函数测试,这个没有问题。按同样的方法去调用项目中的webservice,竟出现了错误,无奈,但至少这个 axis2的使用时没有问题的。

复制 %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

?

/**

*调用发布的服务。

*/

??? publicclass SimpleClient {

?????? publicstaticvoid main(String[] args) throws Exception {

?????????? // 初始化桩文件

?????????? SimpleServerStub stub = new SimpleServerStub();

?????????? // 初始化SimpleMethod方法。

?????????? SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();

?????????? // 调用simpleMethod的setName方法。

?????????? request.setName("zt");

?????????? //? ??? System.out.println(stub.simpleMethod(request).get_return());

?????? }

??? }

?

输出结果:

ztSay this is a Simple method ^-^.

?

热点排行