基于上一篇axis2系列之eclipse开发环境搭建,我们开始创建、发布、访问自己的webservice。
创建Axis2 WebService的Hello World程序,大概有以下几步:
- 创建web service:HelloWorldWS
- 创建、配置services.xml文件
- 部署service,进行访问测试
- 创建客户端,进行调用
一、创建web service:HelloWorldWS
package com.test;
public class HelloWorldWS {
public String helloAxis2(){
return "你好:Axis2";
}
public String helloWorld(String name){
return "你好:"+name;
}
}
二、创建、配置services.xml文件
在WebContent(或WebRoot)/WEB-INF/services/下创建任一文件夹(必须创建,否则无法访问,在我的项目中创建为service文件夹),在service文件夹中创建META-INF文件夹,在META-INF文件夹中创建services.xml文件,文件配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="helloWorldWS">
<description>
HelloWorldWebService
</description>
<parameter name="ServiceClass">com.test.HelloWorldWS</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
三、部署service,访问如下地址:
http://localhost:8080/mywebservice/services/listServices
如果显示如下,则表示部署成功。
四、创建客户端,调用服务器
package com.test;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloWorldWSClient {
public static void main(String[] args) {
try {
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/mywebservice/services/helloWorldWS");
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
options.setTo(targetEPR);
QName opGetWeather = new QName("http://test.com",
"helloAxis2");
Object[] opGetWeatherArgs = new Object[] {};
Class[] returnTypes = new Class[] { String.class };
Object[] response = serviceClient.invokeBlocking(opGetWeather,
opGetWeatherArgs, returnTypes);
String result = (String) response[0];
if (result == null) {
System.out.println("Weather didn't initialize!");
} else {
System.out.println(result);
}
} catch (AxisFault e) {
e.printStackTrace();
}
}
}
运行结果: