axis2实现Web Service

项目中使用的是webservice,以前没有深入研究过,最近空余时间了解了一下使用axis2来实现Web Service。

先简单说一下Web Service

Web Service:

  Web Service 主要是用来不同系统之间的交互,实际上是一种RPC技术,是一种跨编程语言和跨操作系统平台的远程调用技术。比如说微信支付宝等这种可以绑定银行卡的APP,他们本身并没有银行卡中的数据,它们都是通过调用银行系统提供的接口来获取银行卡中的余额。

三种方式利用axis2实现Web Service

  这里说明一下,axis2有war包和jar包,因为axis2本身就是一个服务。

第一种方式:利用普通的java类和axis2服务来实现:

  1.首先去官网下载axis2的相关jar包以及war包(地址:http://ws.apache.org/axis2/

  2.将war包放到tomcat的webapps目录下,然后启动tomcat(启动时tomcat会自动解压war包),启动成功之后访问 http://localhost:8080/axis2/

    如果出现下面的界面则axis2服务部署启动成功。

    

  3.写一个测试类,代码如下:(注意这个类不能有package不然这种方式会出问题

    

  4.将编译之后的class文件,放在tomcat的 "webapps\axis2\WEB-INF" 目录下新建pojo文件夹(这个文件夹名称要固定的,我尝试改了名字但是改完就不行了),然后将TestService.class文件放到文件夹下,启动tomcat,访问  http://localhost:8080/axis2/services/listServices (这个是查询service列表的),访问之后能看到下面的界面就ok!

  

  然后验证TestService接口是否可用,输入:http://localhost:8080/axis2/services/TestService/hello 和 http://localhost:8080/axis2/services/TestService/service?method=测试

    出现下面的页面就说明没问题。

   

  

第二种方式:打包java类(补充方式1的不足)和axis2服务来实现

  由于第一种方式的service类不能带有包名,但是在实际项目中大都是需要带有包名的,因此axis2也提供了带包名的实现方式。

  1.先编写一个测试类,路径为: E:\demo\com\code\TestPackageService.class 代码如下:

  

  2.要将带有package的java类变成一个Web Service服务还需要一个server.xml配置文件,路径为:E:\demo\META-INF\services.xml,内容如下图。(这个文件需要放在执行目录下: META-INF)

  

  这个配置文件中主要需要注意的就是 messageReceivers 标签,该元素用于设置处理WebService方法的处理器。例如: TestPackageService类中的hello方法是没有返回值的所以需要上图的 RPCInOnlyMessageReceiver 类来处理,而TestPackageService类中的service方法是有返回值的因此就需要上图的RPCMessageReceiver来处理。

  3.此种方式来实现WebService,需要打包为.aar文件.(aar文件实际上就是改变了扩展名的.jar文件)

     在cmd中进入项目路径,我的是E:demo,然后输入: jar cvf demo.aar .   注意!最后一个点之前有个空格

    然后将打包好的arr文件放到 tomcat的 "\webapps\axis2\WEB-INF\services"路径下。

  4.启动tomcat验证即可。(验证方式和第一种相同,这里不做赘述)

 

第三种方式:在项目中内置axis2服务,并且不用打包

  此种方式是在已有的web项目中嵌入axis2服务,这样就不用单独的启动axis2服务来实现Web Service了,直接启动web项目之后就会自带axis2服务。

  实现方式:

    1.先将axis2所需的东西复制到项目组(这里还有另一种方式: 解压axis2.war包,将解压出来的conf,lib,modules三个文件夹复制到项目的WEB-INF文件夹下)

      1.1将下载好的axis2jar包加入到/WebRoot/WEB-INF/lib/目录下

      1.2.将axis2.war/axis2-web拷贝至WebServiceDemo/ WebRoot/axis2-web/

    2.修改web.xml文件     

    <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-name>AxisServlet</servlet-name>
      <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    3.写一个简单的demo

      

 

    4.配置service.xml      内容和路径如下图

       

    5.启动项目,到浏览器验证

      访问: http://localhost:8080/项目名称或者自定义的path/services/listServices 查看服务列表

      访问: http://localhost:8080/项目名称或者自定义的path/services/demoService?wsdl

补充说明

  最后补充一下axis2的几个配置项:

  路径是在tomcat下的 \webapps\axis2\WEB-INF\conf\axis2.xml

  axis2的热部署: <parameter name="hotdeployment">true</parameter>

  axis2的热更新: <parameter name="hotupdate">true</parameter>

  如果是方式一来实现但是不想放在pojp目录下可以修改配置文件来自定义目录,在axisconfig节点下添加如下配置就可以放在test目录下了:

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

posted @ 2018-10-15 19:03  Gggoblin  阅读(399)  评论(0编辑  收藏  举报