5分钟学习Axis2的WebService编写和发布

5分钟学习Axis2的WebService编写和发布

作者:yiyang Liu

摘要:

       经作者多次研究Axis后找到一种快速编写和发布Webservice的一条龙方法,本文旨在于采用帮助初学者快速编写和部署Webservice

 

目录

1.      下载和安装axis2

2.      java工程的服务编写

3.      Java工程服务发布

4.      编写测试客户端.

5.      Axis2Spring的整合

 

 

1.下载和安装axis2

1 下载axis2的两个包,一个axis2-*-bin.zip包(axis2的常用工具),一个axis2-*-war.zip包(用来发布axis2)。

2 war包放到tomcat目录的webapp下,然后启动tomcat,会自动生成一个axis2的目录,这就是axis2web主容器,我们自己的java服务最终都要放到这个容器里才能发布。

 

2.java工程的服务编写

该方法适用于简单java工程编写的服务,如果使用其他框架如spring,请见Axis2Spring的整合节

1 创建java工程,例如为JeremyService

2 JeremyService工程的根目录下新建目录META-INF,并新建文件services.xml

3 编写一个java类,这个类用来发布我们的service。例如编写一个Person类,该类在net.ssc目录下。

package net.ssc;

publicclass Person {

    public String getPerson(String name) {

        return name;

    }

 

}

4 编辑META-INF目录下的services.xml内容,注册Person服务。注:一个<service></service>一个服务,如果有多个服务,只需要配置多个<service></service>

<serviceGroup> 

<service name="JeremyService">   

    <description>Jeremy Service</description>     

    <parameter name="ServiceClass">net.ssc.Person</parameter>

    <messageReceivers>        

      <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />        

    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />         

    </messageReceivers>

</service>

</serviceGroup> 

 

到这里java工程的服务就算搞定了,下一步就是发布服务了。

 

 

 

3.Java工程服务发布

1 JeremyService工程打成jeremy.jar包,jar包内容选择srcMETA-INF,把生成好的jeremy.jar放到tomcat目录下的webapps\axis2\WEB-INF\services下。如果有工程依赖的其他jar包,需要把这些jar包放到tomcat目录下的webapps\axis2\WEB-INF\lib下。重启tomcat,注意观察启动的打印信息,如果重启tomcat后有冲突请检查jeremy.jar包中是否有和webapps\axis2\WEB-INF\lib重复的jar包,如果有请重新打包,只选择srcMETA-INF,不要包括jar包内容。

2 检查发布是否成功,在浏览器中输入http://localhost:8080/axi2进入axi2的管理界面,然后点击Services链接查看是否有JeremyService服务,如果有证明成功,如果页面上无该服务或者该服务失败,请重新检查并发布。注意Tomcat端口是否为默认8080

 

4. 编写测试客户端

         利用axis2的工具,采用最简单的在线发布客户端代码。(也可以指定wsdl文档和发布数据类型,具体请参考http://axis.apache.org/axis2/java/core/docs/quickstartguide.html)。

1 首先需要启动服务端tomcat,打开浏览器在本机上测试http://localhost:8080/axis2/services/JeremyService?wsdl可以打开。

2 解压官网下载的axis2-*-bin.zip包,进入解压后的目录axis2-1.6.2-bin\axis2-1.6.2\bin中,可以看到很多bat文件。我们在里面新建一个bat文件:JeremyServiceCreate.bat。内容为:

wsdl2java.bat -uri http://localhost:8080/axis2/services/JeremyService?wsdl -p jeremyserviceclient -s -o d:\webservice\client

注:-p为客户端代码的包名,-d为生成的目的位置。保存后,双击JeremyServiceCreate.bat,此时会在D:\webservice\client\src\jeremyserviceclient生成一个文件JeremyServiceStub.java,这个类中已经集成好服务器的具体ip地址和端口。

3 新建一个客户端工程ClientPerson,新建lib目录,把\axis2-1.6.2-bin\axis2-1.6.2\libjar包拷贝到该目录下。给ClientPerson添加这些Jar包。

拷贝JeremyServiceStub.javaClientPerson工程src\jeremyserviceclient\目录下。

src下新建一个MainGate.java

内容为:

import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

import jeremyserviceclient.JeremyServiceStub;

 

publicclass MainGate {

    publicstaticvoid main(String[] args) {

        JeremyServiceStub.GetPerson person = new JeremyServiceStub.GetPerson();

        person.setName("Jeremy");

        try {

           JeremyServiceStub stub = new JeremyServiceStub();

           try {

               JeremyServiceStub.GetPersonResponse response = stub

                       .getPerson(person);

                String personReturn = response.get_return();

               System.out.println(personReturn);

           } catch (RemoteException e) {

               e.printStackTrace();

           }

        } catch (AxisFault e) {

           e.printStackTrace();

        }

    }

}

运行这个java类,就会输出Jeremy

 

 

5. Axis2Spring的整合

1 拷贝spring的jar包到webapps\axis2\WEB-INF\lib

2 编辑webapps\axis2\WEB-INF\web.xml内容,在</web-app>之前添加下面内容:

<listener>

<listener-class> org.springframework.web.context.ContextLoaderListener </listener-class>

</listener>

<context-param>

<param-name> contextConfigLocation </param-name>

<param-value> /WEB-INF/applicationContext.xml</param-value>

</context-param>

 

在web.xml中添加spring上下文的Listener,并填入spring的配置文件applictionContext.xml的路径,如/WEB-INF/applicationContext.xml。

 

3 在/WEB-INF/applicationContext.xml增加spring对axis2的支持和要发布的服务。

 

<bean id="applicationContext"

class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />

 

<bean id= "springAwareService" class = "net.ssc.Person" >

  <property name= "manger"   ref = "manager"  />

</bean>

 

注:id=springAwareService对应META-INF\services.xml中的<parameter name= "SpringBeanName" >springAwareService</parameter>。

<property name= "manger"   ref = "manager"  />假设为需要注入的manger的bean。

 

4 修改spring框架的Service服务工程配置,编辑META-INF\services.xml内容为:

<service name= "JeremySpringService" >

<description>simple spring example</description>

<parameter name= "ServiceObjectSupplier" >

org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier

</parameter>

<parameter name= "SpringBeanName" >springAwareService</parameter>

<messageReceivers>

<messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-only"

class = "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"  />

<messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-out"

 class = "org.apache.axis2.rpc.receivers.RPCMessageReceiver"  />

</messageReceivers>

</service>

 

5 发布service工程

 生成JarJeremySpringService.jar时,此时只需要打META-INF目录和其中的services.xml。将JeremySpringService工程编译好的class的包拷贝到tomcat下的webapps\axis2\WEB-INF\classes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值