采用axis2进行webservice开发的步骤:
1. 下载axis2的相关版本(bin和war两种)(官方网站)
2. 配置eclipse的插件设置, window->prefereces->Web service->axis2
3. 建一个java工程
4. 在工程中编写自己的webservice接口方法
5. 建立Src/webservice.xml文件配置,内容如下:
<serviceGroup>
<service name="GetFeedBackStateService" scope="application">
<description>GetFeedBackStateService</description>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">
casc.wlw.yk.service.GetFeedBackStateService</parameter>
</service>
</serviceGroup>
6. 在工程目录下建build.xml文件,用于ant编译,格式如下:
<project name="service" basedir="." default="makeService">
<property name="dist.dir" value="dist" />
<property name="dist.dir.classes" value="${dist.dir}/classes" />
<property name="AXIS2_HOME"
value="D:\axis2-1.6.2"/>
<path id="build.class.path">
<fileset dir="${AXIS2_HOME}/lib">
<include name="*.jar" />
</fileset>
</path>
<target name="makeService" depends="">
<copy file="src/services.xml" tofile="${dist.dir.classes}/META-INF/services.xml"
overwrite="true" />
<javac srcdir="src" destdir="${dist.dir.classes}"
includes="yk/service/*">
<classpath refid="build.class.path" />
</javac>
<jar basedir="${dist.dir.classes}" destfile="${dist.dir}/DemoService.aar" />
</target>
</project>
7. 将axis的war版本中的axis2.war文件放入tomcat的webapp下,启动tomcat会自动生成axis2文件夹,然后关闭tomcat
8. 将工程Ant打包,打开cmd,进入工程所在路径,ant打包生成arr文件
9. 将arr文件放入tomcat/webapp/axis2/web-inf/services目录下,启动tomcat
10. 打开浏览器, 输入 http://localhost:8080/axis2,打开services下的相关接口生成wsdl地址。
11. 配置wsdl2java的环境变量(axis/bin)
12. 用wsdl地址生成webservice服务
命令行: wsdl2java –uri http://localhost:8080/axis2/services/Cal?wsdl
自动生成src目录,有两个相关服务类。
13. 编写客户端调用webservice接口,示例如下:
CalculateServiceStub cal = new CalculateServiceStub();
CalculateServiceStub.Plus params = new CalculateServiceStub.Plus();
params.setArgs0(2);
params.setArgs1(3);
CalculateServiceStub.PlusResponse response = cal.plus(params);
System.out.println(response.get_return());
开发过程遇到的问题:
1. 客户端通过webservice接口访问服务端数据库,需要配置本地tomcat的数据库,以mysql为例:打开conf目录下的context.xml文件,加入以下内容:
<Resource
name="jdbc/fcwf"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/yingke"
username="root"
password="123"
maxActive="100"
maxIdle="30"
maxWait="5000"
/>
Webservice传递的内容必须是可序列化得,不管是参数还是返回值,list等集合类是不可序列化的,使用时会报错。解决办法