服务端
新建web项目WebServiceProject
1、axis2官网下载如下文件
下边两个是eclipse的服务发布插件,解压之后复制到eclipse安装目录plugins文件夹
将war包放在tomcat中解压运行,下标的四个文件夹复制到WebServiceProject项目的WEB-INF目录下
2、配置WebServiceProject项目web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>WebServiceProject</display-name>
<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>
3、编写服务端接口代码
4、使用eclipse插件生成arr包
右键项目->NEW->Other
选到classes一级
生成arr包到 WEB-INF/services目录下
5、部署 启动tomcat
访问http://localhost:8606/WebServiceProject/services/ClientService?wsdl 可以看到接口的描述信息
/ services是web.xmlp配置的 / ClientService是上边配置的
客户端
package com.lxy;
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 Main {
public static void main(String[] args) throws Exception {
try {
// axis2 客户端代码
// 指定调用WebService的URL
String url = "http://localhost:8606/WebServiceProject/services/ClientService?wsdl";
EndpointReference targetEPR = new EndpointReference(url);
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 确定目标服务地址
options.setTo(targetEPR);
QName qname = new QName("http://lxy.com", "testMethod");
// 指定testMethod方法的参数值
Object[] parameters = new Object[] { "13" };
// 指定testMethod方法返回值的数据类型的Class对象
Class[] returnTypes = new Class[] { String.class };
// 调用 testMethod方法并输出该方法的返回值
Object[] response = serviceClient.invokeBlocking(qname, parameters, returnTypes);
// String r = (String) response[0];
String r = (String) response[0];
System.out.println(r);
} catch (AxisFault e) {
e.printStackTrace();
}
}
}