axis2学习

本文详细介绍了Axis2 Web服务的安装、配置、发布及调用过程,包括解决MyEclipse安装问题、Axis2插件选择、Tomcat集成、服务发布与测试注意事项,以及Java客户端代码实现。重点突出Axis2的热发布特性及其配置,通过实例演示如何快速搭建Web服务环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我也是找了axis2 的学习资料 主要记录一些 资料中讲的不清楚,或者自己疑问的地方。

myeclipse 8.5按照资料的方法始终安装不起,

官网下载只有  

org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar

org.apache.axis2.eclipse.service.plugin_1.6.2.jar

这两个 放到myeclipse 8.5安装目录下面的dropins文件夹下 始终没反应

最后还是在csdn上找到了1.62的  myeclips 插件

好像多了几个jar文件

javax.xml_1.3.4.v201005080400.jar

javax.xml.bind_2.1.9.v201005080401.jar

javax.xml.stream_1.0.1.v201004272200.jar

所以自己也上传到自己资源空间也怕以后没了 又要下载 要积分啊。。。

so 放上我自己上传的地址:

http://download.youkuaiyun.com/detail/zbz0425/4558471


接下来下载下来的axis2的jar包,地址http://axis.apache.org/axis2/java/core/download.cgi

下载两个

Binary Distribution  和
WAR Distributio


其中有一个axis2-1.6.2-bin.zip的库文件,目录结构如下:

bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具

conf是axis2的配置文件

lib运行所要的依赖库

repository是发布过的axis服务和文件

sample是示例

webapp是web文件和jsp页面等


我们需要将下载下来的axis2-1.6.2-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。

Tomcat启动后,在浏览器中输入:http://localhost:8080/axis2/你可以看到

http://localhost:8080/axis2/services/listServices 查看发布的webservice 列表


感谢 资料作者  感谢授人以渔的   作者 博客 blog.youkuaiyun.com/IBM_hoojo http://hoojo.cnblogs.com/

一 发布wenservice

按照资料自己写的小代码

[html]  view plain copy
  1. import java.util.Random;  
  2.   
  3.   
  4.   
  5. public class HelloWorldService {  
  6.     public String sayHello(String name){  
  7.         return name+"say hello";  
  8.     }  
  9.     public int getAge(int i){  
  10.         return i+ new Random().nextInt(40);  
  11.     }  
  12. }   


HelloWorldService是没有package的,然后去workspace里找到这个HelloWorldService的class 字节码文件

然后放到Tomcat 6.0\webapps\axis2\WEB-INF\pojo 文件夹中


在编写、发布和测试配置的WebService时应注意如下几点:

   1. POJO类不能使用package关键字声明包。

  2. Axis2默认情况下可以热发布WebService,将WebService.class文件复制到Tomcat 6.0\webapps\axis2\WEB-INF\pojo文件夹中,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发布功能,可以在Tomcat 6.0\webapps\axis2\WEB-INF\conf\axis2.xml中配置代码:

[html]  view plain copy
  1. <parameter name="hotdeployment">true</parameter>  
将true改为false。

Axis2虽然是热发布,但不是热更新,成功发布了WebService,再想更新该WebService,就必须重启Tomcat。所以可以需要的话,可以将Axis2设为热更新。

也在axis2.xml文件配置代码

[html]  view plain copy
  1. <parameternameparametername="hotupdate">false</parameter>  

false 改为 true

   3. 测试WebService时,如果WebService方法有参数,需要使用URL的请求参数来指定该WebService方法参数的值,请求参数名与方法参数名要一致,例如,要测试

sayHello方法,请求参数名应为name,那url应该如下
http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=zhangsan<ns:sayHelloResponse><return>zhangsansay hello</return></ns:sayHelloResponse>

发布的文件夹是默认的,如果要在其他的文件目录发布,可以在文件中加一个配置模仿原来 代码中设置pojo的代码首先看默认

pojo


<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>

然后我们在这句下面添加一句相似的即可 direcory 改为你要命名的文件目录 如:

<deployer extension=".class" directory="newpojo" class="org.apache.axis2.deployment.POJODeployer"/>


二 java编写客户端代码调用webservice编写这个需要先导入axis2包  在前面下的 在lib文件夹下,最好全部复制吧可以自己定义libary 或者放到webroot下web-info下的lib文件目录中客户端调用代码 例子


[html]  view plain copy
  1. package services;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.axis2.AxisFault;  
  6. import org.apache.axis2.addressing.EndpointReference;  
  7. import org.apache.axis2.client.Options;  
  8. import org.apache.axis2.rpc.client.RPCServiceClient;  
  9.   
  10.   
  11. public class HelloWorldClient {  
  12.     public static void main(String[] args) throws AxisFault {  
  13.         RPCServiceClient client = new RPCServiceClient();  
  14.         Options options = client.getOptions();  
  15.         String address = "http://localhost:8080/axis2/services/HelloWorldService";  
  16.         EndpointReference epr = new EndpointReference(address);  
  17.         options.setTo(epr);  
  18.         Object[] objEntryArgs = new Object[]{"超人"};  
  19.         Class[] classes = new Class[]{String.class};  
  20.         //QName 就是合格名字 qualified name 是指xml元素名字  
  21.           
  22.         QName  qname = new QName("http://ws.apache.org/axis2","sayHello");   
  23.         Object[] result = client.invokeBlocking(qname, objEntryArgs,classes);  
  24.         System.out.println(result[0]);  
  25.     }  
  26. }  
  27.   
  28. 控制台显示结果  
  29.     这里讲一下  
  30.   
  31.     QName  
  32.  1.来历:qname是qualified name 的简写 2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成 3.举例:  
  33.   
  34. <wsdl:definitions targetNamespace="http://ws.apache.org/axis2">   
  35. <wsdl:types><xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified" targetNamespace="http://ws.apache.org/axis2">   
  36. <xs:element name="sayHello">   
  37. <xs:complexType> <xs:sequence>   
  38. <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>   
  39. </xs:sequence>  
  40.  </xs:complexType>   
  41. </xs:element>   
  42.   
  43. wsdl是名字空间前缀,definitions 是元素名称,xsl:template 就是一个qname  4.总结:qname无非是有着特定格式的xml元素,其作用主要是增加了名字空间,比如有同样的元素名称,而名字空间不同的情况。先了解这么多,请大家补充。  
  44.   
  45. 我的理解可以看做找到targetNamespace是"http://ws.apache.org/axis2" 然后 元素 name是sayHello的方法确定了返回值所在的位置  



注意:axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值