java调用webservice axis

     webservice,先让我们来理解一下这个名词。简单点说调用其他网站的资源的一种方法。所以,通俗地说,Web service(Web服务)就是让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

本地服务与web服务

     本地服务,显然和web服务相对应,完成一项任务,若不需要调用其他网站上得资源,都靠本地资源来完成,我们就把这个称为"本地服务",打个比方,我肚子饿了,我可以自己做饭(本地),也可以打电话订一份快餐(web)来填饱肚子。

为什么要用webservice?

     首先本地服务有一定的缺陷:资源不足,Internet最大的优势就是资源共享;成本因素,包括硬件和人员;可移植性不好;

     其次,webservice有相当的优势:平台无关,无论什么平台都可以用web服务;与编程语言无关,只要遵守相关协议,就可以使用任何编程语言,向其他网站申请web服务等等之类的优势。

下面我们开始发布一个web服务

     发布webservice有两种方式:即时发布和定制发布,定制发布比即时发布稍显复杂,但是也更加灵活,所以我用都是采用定制发布方式。Axis是Apache的一个开源web service引擎。它目前最为成熟的开源web service引擎之一。我们这里介绍利用Axis来发布一个web服务。

  1)首先我们要准备以下jar包:axis.jarcommons-logging-1.1.jarcommons-discovery-0.2.jar、jaxrpc.jarsaaj.jarwsdl4j-1.5.1.jar,activation.jar、mail.jar这些jar包大家都可以到这个网站上去下载 http://www.findjar.com/index.x 输入你想要得jar包,即可搜索到,下载。

   2)编写服务端程序server:eg  

3)编写deploy.wsdd文件:eg

4)发布服务

编辑一个deploy.bat文件(我是放在与web-inf同一目录下):内容如下:

 

set Axis_Lib=D:/Workspace03/releaseByAxis/WEB-INF/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:8080/releaseByAxis/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd

这样的话,可能有些人会出现无法找到类之类得异常,原因就是没有在classpath中加载需要得jar包。所以如果出现此错误,需要在上面内容中加上set  classPath=……目录.jar

如果出现:

 Processing file deploy.wsdd             
 <Admin>Done processing</Admin>

那么恭喜你,你已经成功发布一个服务了。同时在同级目录下会产生一个server-config.wsdd文件,这里给出了我们发布的service的具体信息。

当然也会出现问题,比如我在测试得时候,在这一步骤就会出现:

 

 Exception: AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode:
 faultString: (404)/axis/servlet/AxisServlet
 faultActor:
 faultNode:
 faultDetail:
        {}:return code:  404

错误,那是因为我还没有配置好web.xml,所以如果出现这个问题,那么我们就需要将官方的web.xml文件拷贝到web-inf下。官方xml内容:

 

 

这样我们就可以在浏览器中访问我们发布得服务了,http://localhost:8080/releaseByAxis/servlet/AxisServlet

 

二、编写客户端,访问web服务

1)在浏览器端访问服务器端的服务,那么可以下载到其webservice,通过axis相关工具,可以自动从wsdl文件中生成webservice客户端代码。

set classpath=……jar

set Axis_Lib=D:/Workspace03/releaseByAxis/WEB-INF/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Output_Path=D:/Workspace03/releaseByAxis/src

set Package=p1.SayHello

%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl

执行完该批处理后,即可生成client stub,生成的列表包括Hello.javaHelloService.javaHelloServiceLocator.javaHelloSoapBindingStub.java

也可以不用下载,直接转换,eg:这是一个天气预报得服务

Java  -classpath   E:……jar     org.apache.axis.wsdl.WSDL2Java http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL

得到这些列表后,接下来便是相当于在本机中进行方法调用,贴上一段代码:

2)

 

 

 至此,一套完整的流程就结束了。共同学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值