Axis2+spring整合实例

原博客:Axis2+spring整合实例 - 许喜乐 - 博客频道 - CSDN.NET  http://blog.csdn.net/xuxile/article/details/50073007

一、下载jar包

    axis2-1.6.3下载:

    下载地址:http://axis.apache.org/axis2/Java/core/download.cgi,

    下载axis2-1.6.3-bin.zip,此压缩包包含了所有axis2的jar

    spring3.1.4下载我就不废话了

二、创建整合工程并发测试

    1.在搭好的spring MVC框架中,引入axis2的jar

    2.在WEB-INF下创建services文件夹,,名字一定是services,其他不能识别,在services一定要再创建一个文件夹(名字顺便,例如:MyService),        在MyService下创建一个文件夹,名字一定是META-INF,在META-INF下创建services.xml文件和一个空的ServiceData.xml,这个名字也是不变的。

 最后路径是WEB-INF/services/MyService/META-INF/services.xml services.xml代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 访问地址中的访问那个webservice的名字 -->  
  3. <service name="TestWSService">  
  4.     <description>Spring 整合例子 </description>  
  5.     <parameter name="ServiceObjectSupplier">  
  6.         org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier  
  7.     </parameter>  
  8.     <!-- 配置在applicationContext中配置的bean,,这里的值域bean中的id事一样的,否则就报错找不到bean错 -->  
  9.   
  10.     <parameter name="SpringBeanName">testWSService</parameter>  
  11.     <messageReceivers>  
  12.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
  13.             class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
  14.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
  15.             class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
  16.     </messageReceivers>  
  17. </service>  
<?xml version="1.0" encoding="UTF-8"?>
<!-- 访问地址中的访问那个webservice的名字 -->
<service name="TestWSService">
	<description>Spring 整合例子 </description>
	<parameter name="ServiceObjectSupplier">
		org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
	</parameter>
	<!-- 配置在applicationContext中配置的bean,,这里的值域bean中的id事一样的,否则就报错找不到bean错 -->

	<parameter name="SpringBeanName">testWSService</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>


 
  最后目录WEB-INF/services/MyService/META-INF/ServiceData.xmlServiceData.xml代码如下: 
 

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

三、在web.xml中加入以下信息

  1. <!--axis2  WebService配置信息开始-->  
  2.  <servlet>  
  3.         <servlet-name>AxisServlet</servlet-name>  
  4.        <servlet-class>org.apache.axis2.transport.http.AxisServlet  
  5.        </servlet-class>  
  6.         <load-on-startup>1</load-on-startup>  
  7.     </servlet>  
  8.     <servlet-mapping>  
  9.         <servlet-name>AxisServlet</servlet-name>  
  10.         <url-pattern>/services/*</url-pattern>  
  11.     </servlet-mapping>  
  12. <!-- axis2  WebService配置信息结束-->  
<!--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配置信息结束-->


 
 

四、在applicationContext.xml中注入引用的service

  1. <bean id="testWSService" class="com.usi.jrtx.service.webservice.TestWSService"></bean>  
<bean id="testWSService" class="com.usi.jrtx.service.webservice.TestWSService"></bean>

五、TestWSService.java文件

  1. package com.usi.jrtx.service.webservice;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6.   
  7. import com.github.miemiedev.mybatis.paginator.domain.Order;  
  8. import com.github.miemiedev.mybatis.paginator.domain.PageBounds;  
  9. import com.usi.jrtx.dao.account.AccountMapper;  
  10. import com.usi.jrtx.model.account.Account;  
  11.   
  12. public class TestWSService {  
  13.     @Autowired  
  14.     private AccountMapper accountMapper;  
  15.   
  16.     /** 
  17.      * 计算減法 d1-d2 
  18.      */  
  19.     public Integer jianfa(Integer d1, Integer d2) {  
  20.         return d1-d2;  
  21.     }  
  22.   
  23.     /** 
  24.      * 计算加法 
  25.      */  
  26.     public Integer jiafa(Integer d1, Integer d2) {  
  27.         PageBounds pageBounds = new PageBounds(1,1000,Order.formString("id.desc"));  
  28.         Account account=new Account();  
  29.         List<Account> list=accountMapper.queryAccounts(account, pageBounds);  
  30.         System.out.println("接收d1:"+d1);  
  31.         System.out.println("接收d2:"+d2);  
  32.         for (int i = 0; i < list.size(); i++) {  
  33.             System.out.println("账户名:"+list.get(i).getAccountName());  
  34.         }  
  35.         return d1+d2;  
  36.     }  
  37. }  
package com.usi.jrtx.service.webservice;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.usi.jrtx.dao.account.AccountMapper;
import com.usi.jrtx.model.account.Account;

public class TestWSService {
	@Autowired
	private AccountMapper accountMapper;

	/**
	 * 计算減法 d1-d2
	 */
	public Integer jianfa(Integer d1, Integer d2) {
		return d1-d2;
	}

	/**
	 * 计算加法
	 */
	public Integer jiafa(Integer d1, Integer d2) {
		PageBounds pageBounds = new PageBounds(1,1000,Order.formString("id.desc"));
		Account account=new Account();
		List<Account> list=accountMapper.queryAccounts(account, pageBounds);
		System.out.println("接收d1:"+d1);
		System.out.println("接收d2:"+d2);
		for (int i = 0; i < list.size(); i++) {
			System.out.println("账户名:"+list.get(i).getAccountName());
		}
		return d1+d2;
	}
}

六、客户端使用

  1. package com.usi.jrtx.webservice;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.Random;  
  6.   
  7. import javax.xml.namespace.QName;  
  8.   
  9. import org.apache.axiom.om.OMElement;  
  10. import org.apache.axis2.AxisFault;  
  11. import org.apache.axis2.addressing.EndpointReference;  
  12. import org.apache.axis2.client.Options;  
  13. import org.apache.axis2.rpc.client.RPCServiceClient;  
  14.   
  15. import com.usi.jrtx.model.soap.AccountVO81010;  
  16. import com.usi.jrtx.model.soap.ConsumeDetail;  
  17. import com.usi.jrtx.model.soap.ConsumeVO88010;  
  18. import com.usi.jrwl.util.XMLDomUtil;  
  19.   
  20.   
  21. public class WebserviceTest {  
  22.   
  23.     /** 
  24.      * 测试 
  25.      * @throws Exception 
  26.      */  
  27.     public static void my() throws Exception {  
  28.         String url = "http://192.168.20.34:8080/jrtxManager/services/TestWSService?wsdl";  
  29.         try {  
  30.             // 使用RPC方式调用WebService  
  31.             RPCServiceClient serviceClient = new RPCServiceClient();  
  32.             // 指定调用WebService的URL  
  33.             EndpointReference targetEPR = new EndpointReference(url);  
  34.             Options options = serviceClient.getOptions();  
  35.             // 确定目标服务地址  
  36.             options.setTo(targetEPR);  
  37.             // 确定调用方法  
  38.             options.setAction("urn:jiafa");  
  39.             options.setTimeOutInMilliSeconds(60000);  
  40.             QName qname = new QName("http://webservice.service.jrtx.usi.com","jiafa");  
  41.             // 指定jiafa方法的参数值  
  42.             String requestContent = "";  
  43.             try {  
  44.             } catch (Exception e) {  
  45.                 throw new Exception(e.getMessage(), e.getCause());  
  46.             }  
  47.             Object[] parameters = new Object[] {5,9 };  
  48.             // 指定getPrice方法返回值的数据类型的Class对象  
  49.             Class[] returnTypes = new Class[] { String.class };  
  50.             // 调用方法一 传递参数,调用服务,获取服务返回结果集  
  51.             OMElement element = serviceClient.invokeBlocking(qname, parameters);  
  52.             // 值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。  
  53.             String result = element.getFirstElement().getText();  
  54.             System.out.println(result);  
  55.         } catch (AxisFault e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59.   
  60.     public static void main(String[] args) throws Exception {  
  61.         my();  
  62.     }  
  63. }  
package com.usi.jrtx.webservice;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

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;

import com.usi.jrtx.model.soap.AccountVO81010;
import com.usi.jrtx.model.soap.ConsumeDetail;
import com.usi.jrtx.model.soap.ConsumeVO88010;
import com.usi.jrwl.util.XMLDomUtil;


public class WebserviceTest {

	/**
	 * 测试
	 * @throws Exception
	 */
	public static void my() throws Exception {
		String url = "http://192.168.20.34:8080/jrtxManager/services/TestWSService?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);
			QName qname = new QName("http://webservice.service.jrtx.usi.com","jiafa");
			// 指定jiafa方法的参数值
			String requestContent = "";
			try {
			} catch (Exception e) {
				throw new Exception(e.getMessage(), e.getCause());
			}
			Object[] parameters = new Object[] {5,9 };
			// 指定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 {
		my();
	}
}
七、总结:就是那么简单!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值