1、先在http://axis.apache.org/axis2/java/core/download.cgi 下载最新的包;取里面的axis2.war包放置tomcat下部署解压后得到axis2文件夹;
2、把 %tomcatHome%\webapps\axis2\WEB-INF\conf 文件夹拷贝到项目 WebRoot\WEB-INF 目录下;
3、把 %tomcatHome%\webapps\axis2\WEB-INF\lib 下所有jar拷贝到 WebRoot\WEB-INF\lib 中,并配置项目的BuildPath;
4、把 %tomcatHome%\webapps\axis2\WEB-INF\modules 文件夹拷贝到 WebRoot\WEB-INF 目录下;
5、在WebRoot\WEB-INF下新建目录 “services\AxisService\META-INF” 路径,且在该目录下新建services.xml文件,内容如下:
<service name="AxisService">
<description>AxisService</description>
<!--方式一 结合Spring ,通过ServiceObjectSupplier参数指定SpringServletContextObjectSupplier类来获得Spring的ApplicationContext对象-->
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
</parameter>
<!--SpringBeanName固定的不能改 personService是spring中注册的实现类得id-->
<parameter name="SpringBeanName">personService</parameter>
<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">
com.people.service.impl.PersonServiceImpl
</parameter>
<operation name="getPersonList">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</operation>
<operation name="updatePerson">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
-->
</service>
6、在web.xml中增加配置
<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>
7、
(Spring配置需要)在applicationContext.xml中配置
<bean id="applicationContext"
class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
8、WebService部署启动,并测试
package com.people.client;
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 ClientTest {
public static void main(String[] args) {
try {
final String endpoint = "http://127.0.0.1:8080/person/services/AxisService?wsdll";
String opName = "getPersonList";
Class<?>[] opReturnType = new Class[] { String[].class };
RPCServiceClient serviceClient = new RPCServiceClient();// 此处RPCServiceClient
// 对象实例建议定义成类中的static变量,否则多次调用会出现连接超时的错误。
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
QName opQName = new QName("http://impl.service.people.com", opName);
Object[] ret = serviceClient.invokeBlocking(opQName, new Object[] {},
opReturnType);
System.out.println(((String[]) ret[0])[0]);
} catch (AxisFault e) {
e.printStackTrace();
}
}
}