用户工具

站点工具


分享:技术:webservice:spring整合webservice_axis2

spring整合webservice_axis2

示例项目:springmvc+mybatis+spring+freemarker+maven示例项目,只是普通的web项目,这里在这个项目的基础上,引入axis2,实现发布webservice服务!

web.xml

新增AxisServlet拦截串

web.xml
	<!--axis2 WebService配置信息开始 -->
	<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>
	<!-- axis2 WebService配置信息结束 -->

新建目录META-INF

在/WEB-INF/下手动创建目录/services/service/META-INF/

ServiceData.xml

ServiceData.xml
<?xml version="1.0" encoding="UTF-8"?>  
<ServiceData>    
</ServiceData>

services.xml

services.xml
<?xml version="1.0" encoding="UTF-8"?>  
 
<!-- 对外发布的WebService名字 -->  
<service name="AxisService">  
    <description>Spring 整合例子 </description>  
 
    <parameter name="ServiceObjectSupplier">  
        org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier  
    </parameter>  
 
    <!-- 配置在applicationContext中配置的bean,这里的值域bean中的id事一样的,否则就报错找不到bean错 -->  
    <parameter name="SpringBeanName">axisService</parameter>  
 
    <messageReceivers>  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
    </messageReceivers>  
</service>

application-context.xml

新增bean配置

application-context.xml
<bean id="axisService" class="com.gxx.record.service.impl.AxisService"></bean>

AxisService.java

AxisService.java
package com.gxx.record.service.impl;
 
/** 
 * Axis2实现的WebService
 * @author Gxx
 */
public class AxisService {
    /** 
     * 计算加法 d1+d2 
     */  
    public Integer jiafa(Integer d1, Integer d2) {  
        return d1+d2;  
    }
}

发布后访问

客户端调用

执行main方法得到结果

TestWebservice.java
package com.gxx.record.webservice;  
 
import javax.xml.namespace.QName;
 
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;  
 
/**
 * 测试WebService
 * @author Gxx
 */
public class TestWebservice {  
 
    /** 
     * 测试 
     * @throws Exception 
     */  
    public void test() throws Exception {  
        String url = "http://localhost:8080/record/services/AxisService?wsdl";  
        try {  
            // 使用RPC方式调用WebService  
            RPCServiceClient serviceClient = new RPCServiceClient();  
            // 指定调用WebService的URL  
            EndpointReference targetEPR = new EndpointReference(url);  
            Options options = serviceClient.getOptions();  
            // 确定目标服务地址  
            options.setTo(targetEPR);  
            // 确定调用方法  
            options.setAction("urn:jiafa");  
            options.setTimeOutInMilliSeconds(60000);  
            // 上图中的targetNamespace
            QName qname = new QName("http://impl.service.record.gxx.com","jiafa");  
            // 指定jiafa方法的参数值  
            String requestContent = "";  
            try {  
            } catch (Exception e) {  
                throw new Exception(e.getMessage(), e.getCause());  
            }  
            Object[] parameters = new Object[] {20,30};  
            // 指定getPrice方法返回值的数据类型的Class对象  
            Class[] returnTypes = new Class[] { String.class };  
            // 调用方法一 传递参数,调用服务,获取服务返回结果集  
            OMElement element = serviceClient.invokeBlocking(qname, parameters);  
            // 值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。  
            String result = element.getFirstElement().getText();  
            System.out.println(result);  
        } catch (AxisFault e) {  
            e.printStackTrace();  
        }  
    }  
 
    public static void main(String[] args) throws Exception {  
        new TestWebservice().test();
    }  
}  

打包下载

分享/技术/webservice/spring整合webservice_axis2.txt · 最后更改: 2017/01/09 18:25 由 gxx