Axis2学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axis2学习笔记相关的知识,希望对你有一定的参考价值。
Axis2学习笔记
目录:
1.准备
2.发布service
3.生成客户端代码
1. 准备
下载axis2 的bin和war两种发行版本。
Bin版本用于使用自带的命令生成客户端代码。
War包中的WEB-INF目录下的文件用于服务提供方使用。
2. 发布service
新建一个Maven项目,在pom.xml中新增以下依赖:
<dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-kernel</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-ant-plugin</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-corba</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-jaxws</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-spring</artifactId> <version>1.7.3</version> </dependency>
在本例中是使用spring与axis2集成一起,所以有axis2-spring 依赖。
在web.xml中新增一个axis2 servlet ,代码如下:
<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
配置servlet-mapping:
<servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
把下载的war包中的WEB-INF目录下的conf、services、modules文件夹复制到工程中的WEB-INF目录下。
新建一个Service Pojo类:
publicclass NameService { publicvoid print(String name) { System.err.println("print :"+name); } public String getFullName(String name) { return"Your name is "+name; } }
在spring中注册NameService类为一个bean。
<bean name="nameService" class="com.hikvision.ws.service.NameService"></bean>
在services目录下新建META-INF目录,在META-INF目录中新建services.xml文件,用于描述该服务。
services.xml:
<servicename="NameService"> <description> NameService </description> <parametername="ServiceObjectSupplier"> org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier </parameter> <messageReceivers> <messageReceivermep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> <messageReceivermep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parametername="SpringBeanName"> nameService </parameter> </service>
其中
<parameter name="SpringBeanName">
注意,services.xml中不要出现
<?xml version=”1.0”encoding=”UTF-8” ?>
在命令行中进入services目录,输入命令:jar –cvf NameService.arr ./META-INF
这个命令是将当前目录中的META-INF中的文件打包成一个NameService.arr文件。
注意:这个命令是jdk中的jar命令,需要本地安装jdk并且设置环境变量。
这样会在services目录生成对应的arr文件,本例生成的是NameService.arr文件。arr文件其实和jar文件类似,两者的区别是:
*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
*.aar:包含所有资源,class以及res资源文件全部包含。
NameService.arr文件中包含的是services.xml,是对该服务的描述。
至此,NameService服务配置完毕。启动tomcat,在浏览器中输入http://localhost:port/项目发布目录/services/NameService?wsdl,即可得到服务的wsdl。
3. 生成客户端代码
保存上一章节中得到的wsdl文件为NameService.xml。
解压axis2的bin版本,在命令行中切换到当前目录,执行以下命令:
D:\axis2-1.7.3\bin\wsdl2java -uriNameService.xml -p com.test.webService.stub –s
其中“D:\axis2-1.7.3\”是axis2的bin版本解压到是目录。 -uri指定了wsdl文件,-p指定了包名, -s代表同步执行。
该命令会在当前目录生成src文件夹,文件夹中有*stub.java文件,调用这个文件即可调用ws。
新建一个Maven项目,在pom.xml中加入以下依赖:
<dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-kernel</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-ant-plugin</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-jaxws</artifactId> <version>1.7.3</version> </dependency>
将生成的stub.java文件复制到项目中的指定包中(指生成stub时–p 指定的包)。
新建一个NameServiceClient.java文件:
import java.rmi.RemoteException; import com.hikvision.ws.stub.CaculateServiceStub; import com.hikvision.ws.stub.CaculateServiceStub.Plus; import com.hikvision.ws.stub.NameServiceStub; import com.hikvision.ws.stub.NameServiceStub.GetFullName; publicclass NameServiceClient { publicstatic String getFullName(String name)throwsRemoteException { NameServiceStub stub=new NameServiceStub("http://127.0.0.1:8011/Axis2/services/NameService"); GetFullName getfull=new GetFullName(); getfull.setName(name); return stub.getFullName(getfull).get_return(); } publicstaticvoid main(String[] args)throwsRemoteException { System.err.println(getFullName("12313416546-****************************")); } }
运行该文件就完成了对webservice的调用。
本文出自 “飞鱼技术” 博客,请务必保留此出处http://flyingfish.blog.51cto.com/9580339/1789661
以上是关于Axis2学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service
Eclipse + Apache Axis2 发布SOAP WebService第一个程序Hello Axis2 SOAP!
基于Myeclipse+Axis2的WebService开发实录
Eclipse + Apache Axis2 发布RESTful WebService基础知识