WebProject项目手动配置Axis2

来源:互联网 发布:分布式数据库产品 编辑:程序博客网 时间:2024/05/20 18:15

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();}}}


原创粉丝点击