webservice技术之-axis2(服务端ADB)
来源:互联网 发布:淘宝全网举报假货最快 编辑:程序博客网 时间:2024/06/05 15:56
前言:
近期研究webservice技术,各类文章很多,但对于第一次接触这个技术的人来讲,学习成本还是较高,记录下我学习的历程,希望对你有所帮助。
Apache官网的对于axis2的教程很详细,大家可以耐心读完。
Apache官网教程(点击这里)
一、什么是axis2
其实就是一种流行的开源webservice框架,现在流行的框架有Axis1,Axis2,Xfire,CXF,JWS等。
二、服务器、客户端
要么利用webservice技术写服务端,要么写客户端,当然一个项目也可以同时具备服务器端和客户端的功能(这个是我的猜测,正在验证);
三、如何发布服务端
官网教程中的发布服务器端,实际上是下载war包后,放到tomcat的webapp目录中(通过启动tomcat后解压出的项目),对该项目进行修改即可完成发布。
而我的需求是要将已经开发完成的项目发布为webservice服务端,所以只需把关键axis2项目的关键文件拷贝至自己的项目中即可(这是另一种偷懒方式)。
我们这里使用官网给的StockQuoteService这个类进行说明。
package samples.quickstart.service.pojo;import java.util.HashMap;public class StockQuoteService { private HashMap map = new HashMap(); public double getPrice(String symbol) { Double price = (Double) map.get(symbol); if(price != null){ return price.doubleValue(); } return 42.00; } public void update(String symbol, double price) { map.put(symbol, new Double(price)); }}
1.编译
首先将java文件编译成class文件
通过使用命令
javac StockQuoteService.java
2.使用java2wsdl命令,将class文件转为wsdl文件(需要注意的是,这里是进行服务器端的wsdl的生成)
具体命令为:
(Windows)%AXIS2_HOME%\bin\java2wsdl -cp . -cn samples.quickstart.service.pojo.StockQuoteService -of StockQuoteService.wsdl(Linux)$AXIS2_HOME/bin/java2wsdl -cp . -cn samples.quickstart.service.pojo.StockQuoteService -of StockQuoteService.wsdl
命令的具体意思可以参照官网教程,理不理解都无所谓,我没看具体什么意思。
3.下一步是把从war包解压的axis2项目中的主要文件拷贝到自己的项目中
axis2项目的原结构为
这个项目中的src是没有java代码的
需要拷贝的文件包括
①axis2-web,这个是已经写好的一些jsp页面,很多都没有用,日后可以自己精简,也可以删掉。刚开始最好拷贝过去。
②org包是我生成的calss文件,在我测试的时用的,服务器端不需要考虑,忽略即可。
③拷贝conf包和文件(有人说需要删除modules的配置文件,我没删,也没遇到问题)
④modules文件夹不需要拷贝
⑤把lib包中的jar包拷贝一下
⑥service文件拷贝过去,包含version-1.6.3.arr和service.list(其实就是我们发布服务的地方)
⑦由于我的是springmvc+spring+mybatis项目,所以需要拷贝web.xml文件中的配置到我的web.xml中
<servlet> <servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <!--<init-param>--> <!--<param-name>axis2.xml.path</param-name>--> <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>--> <!--<param-name>axis2.xml.url</param-name>--> <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>--> <!--<param-name>axis2.repository.path</param-name>--> <!--<param-value>/WEB-INF</param-value>--> <!--<param-name>axis2.repository.url</param-name>--> <!--<param-value>http://localhost/myrepo</param-value>--> <!--</init-param>--> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>AxisAdminServlet</servlet-name> <display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name> <servlet-class> org.apache.axis2.webapp.AxisAdminServlet</servlet-class> </servlet> <!-- servlet> <servlet-name>SOAPMonitorService</servlet-name> <display-name>SOAPMonitorService</display-name> <servlet-class>org.apache.axis2.soapmonitor.servlet.SOAPMonitorService</servlet-class> <init-param> <param-name>SOAPMonitorPort</param-name> <param-value>5001</param-value> </init-param> <init-param> <param-name>SOAPMonitorHostName</param-name> <param-value>localhost</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet --> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/servlet/AxisServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisAdminServlet</servlet-name> <url-pattern>/axis2-admin/*</url-pattern> </servlet-mapping> <!-- servlet-mapping> <servlet-name>SOAPMonitorService</servlet-name> <url-pattern>/SOAPMonitor</url-pattern> </servlet-mapping --> <mime-mapping> <extension>inc</extension> <mime-type>text/plain</mime-type> </mime-mapping>
4.关键一步,通过wsdl文件生成相关的服务端代码
axis2生成服务端代码有4中方式,包括Deploying POJOs、Building the service using AXIOM、Generating the service using ADB、Generating the service using XMLBeans、Generating the service using JiBX,区别可以去百度。
对于一般需求,使用ADB方式即可,方便、快捷。
①跳转到Axis2_HOME/samples/quickstartadb目录中
把之前生成的wsdl文件放到resources\META-INF中
执行下面命令
(Windows)%AXIS2_HOME%\bin\wsdl2java -uri resources\META-INF\StockQuoteService.wsdl -p samples.quickstart.service.adb -d adb -s -ss -sd -ssi -o build\service(Linux)$AXIS2_HOME/bin/wsdl2java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.adb -d adb -s -ss -sd -ssi -o build/service
会生成budild文件夹,
找到
build/service/src/samples/quickstart/adb/service/StockQuoteServiceSkeleton.java
这个类是服务端实现接口后,需要我们重写逻辑的类,我们要在接受到客户端传过来的参数后要进行的操作在这里进行写。
package samples.quickstart.service.adb;import samples.quickstart.service.adb.xsd.GetPriceResponse;import samples.quickstart.service.adb.xsd.Update;import samples.quickstart.service.adb.xsd.GetPrice;import java.util.HashMap;public class StockQuoteServiceSkeleton { private static HashMap map; static{ map = new HashMap(); } public void update(Update param0) { map.put(param0.getSymbol(), new Double(param0.getPrice())); } public GetPriceResponse getPrice(GetPrice param1) { Double price = (Double) map.get(param1.getSymbol()); double ret = 42; if(price != null){ ret = price.doubleValue(); } GetPriceResponse res = new GetPriceResponse(); res.set_return(ret); return res; }}
转跳到build/service文件夹(这个目录中有一个build.xml文件,是ant命令的配置文件)
执行命令
ant jar.server
在这一步遇到乱码问题,暂时没有解决。
执行命令成功以后,我们得到目录build/service/build/lib中的StockQuoteService.aar 文件
这个文件就是我们最终需要的东西,可以理解为我们服务器端的编码最终打包到类似于jar包中
5.最后,我们只需将StockQuoteService.aar文件拷贝到项目的services文件夹中
上图中我们可以看到有两个arr文件,一个是axis2项目自带的,version-1.6.3.arr。另一个就是我生成的。
最后一步,修改service.list文件,如下图
把所有的服务写进去即可。
验证
查看服务列表
http://localhost:8080/axis2/services/listServices
查看wsdl文件
http://localhost:8080/axis2/services/StockQuoteService?wsdl
查看xsd文件
http://localhost:8080/axis2/services/StockQuoteService?xsd
- webservice技术之-axis2(服务端ADB)
- WebService之Axis2技术总结
- webservice Apache axis2 adb之開發實例
- webservice之axis2服务端搭建(maven方式创建web项目)
- WebService 之Axis2------(一)
- 基于Axis2开发WebService-服务端
- Webservice实践(四)基于AXIS2的服务端开发
- 【webservice】如何发布axis2的webservice服务端
- Axis2之ADB
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- axis2开发webservice之编写Axis2模块(Module)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- WebService大讲堂之Axis2(9): 编写Axis2模块(Module)
- axis2开发webservice之编写Axis2模块(Module)
- axis2开发webservice之编写Axis2模块(Module)
- Java事务处理
- JQuery图表框架之Highcharts
- Android带有删除按钮的EditText:EditTextWithDeleteButton
- iPhone解锁密码忘了,指纹识别也用不了 -- 恢复iPhone吧
- C# 格式字符串的格式项
- webservice技术之-axis2(服务端ADB)
- 二叉树建树
- 一文读懂机器学习,大数据/自然语言处理/算法全有了……
- XML与DataSet的相互转换
- Android RecyclerView 使用完全解析 体验艺术般的控件
- Android仿微信语音聊天
- Android性能优化典范(三)
- spring中的单例与java中的单例
- Android连续点击两次按钮启动两次Activity