曾经做过的项目里涉及Android客户端向服务器发送请求,服务器访问数据库获得数据并返回给Android客户端。当时Android客户端与服务器的通信已经实现,我只负责客户端布局和数据呈现的部分,近日有遇到类似项目,所以计划完整的研究和实现一下整个通信过程。
目前选择的方案是服务器端开启Webservice,Android客户端通过第三方的ksoap jar包访问,对象传递采用Jason序列化。那么现在遇到的第一个问题就是服务器实现webservice。
接下来上网查资料,选择Axis2,大多都需要安装,事实上我参考上一个项目,很快速的实现了Webservice,下边展示一下这个过程。
1. 首先现在Axis,在http://axis.apache.org/axis2/java/core/download.cgi 我选择的是目前最新的axis2-1.6.2。
2. 创建一个Web Project。起名WebserviceTest。
3. 创建一个类
package com.shuai.test; public class HelloService { public String sayHello(){ return "hello"; } public String sayHelloToPerson(String name){ if(name==null){ name = "nobody"; } return "hello,"+name; } }
4. 解压缩下载的axis2-1.6.2,将对应的内容贴到工程中去。
分别是:lib下的jar包复制到WebRoot/WEB-INF/lib目录下。
conf目录整个复制到WebRoot/WEB-INF/中。
repository目录下的modules目录复制到WebRoot/WEB-INF/中。
repository目录下的services目录复制到WebRoot/WEB-INF/中。
在services目录下创建目录helloservice/META-INF/,在其中创建services.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <service name="HelloService"> <description> Web Service </description> <parameter name="ServiceClass"> com.shuai.test.HelloService </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>
修改web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <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> </web-app>
此时项目目录结果如图:
现在可以Run起来了,tomcat启动之后,在浏览器输入http://localhost:8080/WebserviceTest/services/HelloService/sayHelloToPerson?name=shuai
就可以看到效果了:
OK,这说明基本的Webservice已经可以发布访问了,剩下的可以加入Hibernate、Ibatis等访问数据库,加入Struct,Spring等框架,实现更复杂的功能,但是Webservice访问接口的道理是相同的。
目前Webservice算是尝试成功了,但某些具体配置还不是太清楚,现在只是记录一次成功的经验,和大家分享。