myeclipse+axis2+spring集成

本文详细介绍如何将Axis2与Spring框架集成,包括项目搭建步骤、关键代码示例及配置文件说明,帮助开发者快速实现WebService服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

axis2+spring集成

1、新建一个web project项目,最终工程目录如下:

注意:本文只注重webservice服务器端的开发,因此com.ljq.client和com.ljq.test忽略不计

         

2、添加所需jar

            

3、接口HelloWorld

   
package com.ljq.service; public interface HelloWorld { public String greeting(String name); public String print(); }

         

4、接口实现类HelloWorldBean

复制代码
   
package com.ljq.service; public class HelloWorldBean implements HelloWorld { public String greeting(String name) { return " 你好 " + name; } public String print() { return " 我叫林计钦 " ; } }
复制代码

          

5、webservice类HelloWorldWebService

复制代码
   
package com.ljq.service; import org.apache.axis2.AxisFault; import org.apache.axis2.ServiceObjectSupplier; import org.apache.axis2.description.AxisService; import org.apache.axis2.description.Parameter; import org.apache.axis2.i18n.Messages; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * 可能出现Axis2 spring bean not found 或者 Spring applicationContext not found。 * * 解决办法:构建自己的ServiceObjectSupplier,实现接口ServiceObjectSupplier,同时也实现Spring的ApplicationContextAware接口 * * * @author Administrator * */ public class HelloWorldWebService implements ServiceObjectSupplier, ApplicationContextAware { private static ApplicationContext ctx; public Object getServiceObject(AxisService axisService) throws AxisFault { Parameter springBeanName = axisService.getParameter( " SpringBeanName " ); String beanName = ((String) springBeanName.getValue()).trim(); if (beanName != null ) { if (ctx == null ) throw new AxisFault( " applicationContext is NULL! " ); if (ctx.getBean(beanName) == null ) throw new AxisFault( " Axis2 Can't find Spring Bean: " + beanName); return ctx.getBean(beanName); } else { throw new AxisFault(Messages.getMessage( " paramIsNotSpecified " , " SERVICE_SPRING_BEANNAME " )); } } public void setApplicationContext(ApplicationContext ctx) throws BeansException { this .ctx = ctx; } }
复制代码

            

6、配置web.xml文件

复制代码
   
<? xml version="1.0" encoding="UTF-8" ?> < web-app version ="2.5" xmlns ="http://java.sun.com/xml/ns/javaee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" > <!-- 添加spring监听器 --> < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > <!-- 加载spring的配置文件 --> < context-param > < param-name > contextConfigLocation </ param-name > < param-value > /WEB-INF/applicationContext.xml </ param-value > </ context-param > <!-- 注册axis2的servlet --> < 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 > < welcome-file-list > < welcome-file > index.jsp </ welcome-file > </ welcome-file-list > </ web-app >
复制代码

       

7、在WEB-INF目录下配置applicationContext.xml(不存在则自己创建)

复制代码
   
<? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > < beans > < bean id ="applicationContext" class ="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" /> < bean id ="helloWorld" class ="com.ljq.service.HelloWorldBean" ></ bean > </ beans >
复制代码

         

8、在WEB-INF\services\axis\META-INF\目录下配置services.xml(不存在则自己创建)

复制代码
   
<? xml version="1.0" encoding="UTF-8" ?> < service name ="hwWebService" > < description > axis2与spring集成案例 </ description > <!-- 通过ServiceObjectSupplier参数指定SpringServletContextObjectSupplier类来获得Spring的ApplicationContext对象 --> < parameter name ="ServiceObjectSupplier" > org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier </ parameter > <!-- SpringBeanName固定的不能改 helloWorld是spring中注册的实现类得id --> < parameter name ="SpringBeanName" > helloWorld </ parameter > <!-- 在这里最值得注意的是<messageReceivers>元素,该元素用于设置处理WebService方法的处理器。 例如,getGreeting方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类, 而update方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。 --> < 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 > </ service >
复制代码

        

axis2+spring集成到此已经开发完成,接下把工程部署到tomcat,

然后通过http://localhost:8083/axis2spring/services/hwWebService?wsdl访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值