axis2实现Web Service

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

先简单说一下Web Serviceweb

Web Service:apache

  Web Service 主要是用来不一样系统之间的交互,其实是一种RPC技术,是一种跨编程语言和跨操做系统平台的远程调用技术。好比说微信支付宝等这种能够绑定银行卡的APP,他们自己并无银行卡中的数据,它们都是经过调用银行系统提供的接口来获取银行卡中的余额。编程

三种方式利用axis2实现Web Service浏览器

  这里说明一下,axis2有war包和jar包,由于axis2自己就是一个服务。tomcat

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

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

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

    若是出现下面的界面则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"/>

相关文章
相关标签/搜索