axis2+spring集成

转载自:http://www.cnblogs.com/linjiqin/archive/2011/07/05/2098316.html

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访问

时间: 2024-10-30 15:13:25

axis2+spring集成的相关文章

Spring集成axis2

1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://ww

RabbitMQ安装和使用(和Spring集成)

一.安装Rabbit MQ Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接下载安装3.2.3 版本: 下载并安装 Eralng OTP For Windows (vR16B03) 运行安装 Rabbit MQ Server Windows Installer (v3.2.3) 具体操作步骤参考:在 Windows 上安装Rabbit MQ 指南 本人遇到的问题 当安装RabbitMQ后,使用rabbitmqctl

spring集成quartz

spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class" Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成

Hessian入门(包括与Spring集成)

A.纯Hessian接口开发步骤 Hessian-JAVA服务器端必须具备以下几点: * 1.包含Hessian的jar包(hessian-4.0.37.jar) * 2.设计一个接口,用来给客户端调用(IHessian.java) * 3.实现该接口的功能(IHessianImpl.java) * 4.配置web.xml,配好相应的Servlet(web.xml) * 5.对象必须实现Serializable接口(Foo.java) Hessian-JAVA服务端代码预览图: 1.包含Hess

Struts2+Spring集成合并

前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并.其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分好彼此的工作就可以了. 好看一下Struts2+Spring的集成方案!  Struts2和Spring集成有两种方案,是根据action的创建来划分的!  方案一,Struts2负责流程,Spring负责对象的创建:Action由Struts2框架负责创建:Service由Spring框架负责创建

Java Persistence with MyBatis 3(中文版) 第五章 与Spring集成

MyBatis-Spring是MyBatis框架的子模块,用来提供与当前流行的依赖注入框架Spring的无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向切面编程(Aspect Oriented Programming,AOP)的Java框架,鼓励使用基于POJO的编程模型.另外,Spring提供了声明式和编程式的事务管理能力,可以很大程度上简化应用程序的数据访问层(data access layer)的实现.在本章中,我们将看到在基于Spring的

spring集成Log4j以及log4j配置简要说明

Spring集成: web.xml中配置log4j <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/log4j.xml</param-value></context-param> <!-- 加载Spring框架中的log4j监听器Log4jConfigListener --><listener>

rabbitMQ第五篇:Spring集成RabbitMQ

前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.6.0.RELEASE</version> <

Spring 集成 RMI

Maven <dependency> <groupId>org.springframework</groupId> <artifactId>spring-remoting</artifactId> </dependency> 服务端 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spri