axis2 webservice 发布、调用与项目集成

发布

  1. 在apache官网下载axis2包,下载Binary Distribution和War Distribution两个zip。
  2. 将war放入tomcat webapps下部署。并输入 http://localhost:8080/axis2测试确保显示正常。
  3. 将bin包解压,记住位置。配置环境变量AXIS2_HOME,路径为你解压的那个目录位置,后面要用到。
  4. web service发布。方法有两种,1、使用pojo发布;2、通过配置文件发布。第一种pojo发布不能定义package,所以,我们不谈。我认为不定义package的webservice那就是在耍流氓。这里主要对第二种方法做记录,只为说明如何去使用,不会嵌入业务逻辑。

Axis2Test.java

package com.array7.ws;  
public class Axis2Test {  
    public String print(String name) {  
        if (name == null) {  
            name = "anonymous";  
        }  
        return "Hi~you are " + name;  
    }  
}

services.xml

<?xml version="1.0" encoding="UTF-8"?>    
<serviceGroup>    
<service name="<?xml version="1.0" encoding="UTF-8"?>    
<serviceGroup>    
<service name="Axis2Test">    
    <description>    
        Web Service test  
    </description>    
    <parameter name="ServiceClass">    
        com.array7.ws.Axis2Test  
    </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>  

如果要配置多个webservice,在serviceGroup中添加service标签块即可。
5. 打aar包
将java文件编译。
在你愿意的任何位置创建目录(我的叫ws),在这个目录下,按照包结构将Axis2Test.class放入,结构就应该是这样的:X:\ws\com\array7\ws\Axis2Test.class,
将services.xml放入X:\ws\META-INF\services.xml。
cmd窗口,cd X:\ws,执行 jar -cvf ws.aar . ,有个(.)别落下。成功后在ws目录生成一个ws.aar的文件。
6. 将生成的aar放入tomcat\webapps\WEB-INFO\services中。重启tomcat。浏览器输入:http://locahost:8080/axis2/services/Axis2Test?name=array7
如果显示一个xml文档并且有:Hi~you are array7,则说明我们的webservice发布成功了。不能成功访问,则请根据提示从前面的步骤查找原因。
客户端调用
7. 执行:
%AXIS2_HOME%\bin\wsdl2java -urihttp://localhost:8080/axis2/services/Axis2?wsdl -p com.array7.ws.client -s -o client
参数p代表包名,参数o代表保存在当前目录下的存放代码的文件夹名称。即在当前目录下您将会看见一个client的目录。这个目录里有自动生成的客户端代码。
8. 将代码放入项目对应的包中,要引入axis2 lib里面的jar包。新建一个java类,做一个测试。

Run.java

public class Run {  
    public static void main(String[] args) throws RemoteException {  
         Axis2TestStub stub = new Axis2TestStub();    
         Axis2TestStub.Print print = new Axis2TestStub.Print();    
            print.setName("array7");  
            System.out.println(stub.print(print).get_return());    
    }  
}  

期望输出的结果是:

Hi~you are array7

在项目中集成

  • 引入axis2相关jar包,为了省事都弄进去了。
  • 将webapps下面的axis2目录中WEB-INFO下的config、moudles和services目录对应复制到项目的WEB-INFO下。
  • 配置web.xml,增加下列代码。
<servlet>  
<description></description>  
<display-name>Apache-Axis Servlet</display-name>  
<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-name>AxisServlet</servlet-name>  
<url-pattern>/services/*</url-pattern>  
</servlet-mapping>  

posted @ 2015-08-07 18:53  土豆条  阅读(129)  评论(0编辑  收藏  举报