项目中使用的是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"/>