最近项目中会使用到webservice,实现整个项目中的一个功能,项目使用的是spring mvc + hibernate(annotation),在网上找了一些资料之后,结合项目组的具体情况,决定使用axis2 v1.5.5(网上资料非常多)。为了节省开发成本,打算将axis2整合到项中。
首先,建一个web项目,将。spring mvc及hibernate (annotation)中要便用的jar包,都拷贝到WEB-INF下lib中,按照平时开发项目的习惯,将准备工作做好。
然后在apache官网上下载axis2-1.5.5的压缩包,解压之后将lib下的所有jar包都拷贝到WEB-INF下的lib中。
下面是关键,如果操作不当,配置就不会成功
1、在webapp下新建axis2-web的文件夹,在这个文件夹中新建一个listServices.jsp,用于迭代项目中的webservice服务,代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@
page
import=
"org.apache.axis2.Constants,org.apache.axis2.description.AxisOperation,org.apache.axis2.
description.AxisService,java.util.Collection,java.util.HashMap,java.util.Iterator"%><html>
<head>
<title>List Services</title>
<style>
h2 {
margin: 20 0 5 0;
}
ul {
margin-top: 5;
}
</style>
</head>
<body>
<h1>
Available services
</h1>
<%
HashMap serviceMap = (HashMap) request.getSession().getAttribute(
Constants.SERVICE_MAP);
Collection servicecol = serviceMap.values();
if (servicecol.size() == 0) {
%>Available services is Empty.<%
}
for (Iterator iterator = servicecol.iterator(); iterator.hasNext();) {
AxisService axisService = (AxisService) iterator.next();
Iterator opItr = axisService.getOperations();
String serviceName = axisService.getName();
%>
<h2>
<font color="blue"><a href="<%=serviceName%>?wsdl"
target="_blank"><%=serviceName%></a> </font>
</h2>
<i>Available Operations</i>
<ul>
<%
while (opItr.hasNext()) {
AxisOperation axisOperation = (AxisOperation) opItr.next();
%><li><%=axisOperation.getName().getLocalPart()%></li>
<%
}
%>
</ul>
<%
}
%>
</body>
</html>
2、配置spring的applicationContext.xml文件, 这里介绍的是以servletContext加载spring配置文件的模式;applicationContext中的配置可以按照之前普通spring bean的配置方式,但是需要在配置文件中加上下面这段 :
写道
<bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
3、axis2与spring整合,访问wsdl是没有问题,但是在调用具体服务的时候,会报Axis2 Can't find Spring's ApplicationContext的bub,需要在项目中添加这样的一个类:
package com.tiilii.tiisso.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.extensions.spring.receivers.ApplicationContextHolder;
import org.apache.axis2.i18n.Messages;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SSOWebService implements ServiceObjectSupplier,
ApplicationContextAware {
private ApplicationContext applicationContext;
public Object getServiceObject(AxisService axisService) throws AxisFault {
Parameter springBeanName = axisService.getParameter("SpringBeanName");
String beanName = ((String) springBeanName.getValue()).trim();
if (beanName != null) {
//这块是个人添加的,在网络上找到很多帖子,不知道如何注入applicationContext,就想了这样的一个笨办法
applicationContext = ApplicationContextHolder.getContext();
if (applicationContext == null)
throw new AxisFault("applicationContext is NULL! ");
if (applicationContext.getBean(beanName) == null)
throw new AxisFault("Axis2 Can't find Spring Bean: " + beanName);
return applicationContext.getBean(beanName);
} else {
throw new AxisFault(Messages.getMessage("paramIsNotSpecified",
"SERVICE_SPRING_BEANNAME"));
}
}
@Override
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
// TODO Auto-generated method stub
this.applicationContext = ctx;
}
}
4、在WEB-INF下新建一个services的文件夹,将version-1.5.aar拷贝到这个文件夹中;在这个文件夹下新建一个与webservice服务名相关的文件夹(任意命名,只试过英文命名),在这个文件夹下,再新建一个文件夹,命名为META-INF,在这个文件夹下新建services.xml文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="TiiSSO">
<description>WeatherService:Spring POJO Axis2 Service Sample
</description>
<parameter name="ServiceClass">
com.tiilii.tiisso.service.SSOService
</parameter>
<parameter name="ServiceObjectSupplier" locked="false">
com.tiilii.tiisso.service.SSOWebService
</parameter>
<parameter name="SpringBeanName" locked="false">SSOService
</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>
</service>
</serviceGroup>
5、最后配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<display-name></display-name>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/config/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>TIIWS</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 如有多个,请以逗号隔开 -->
<param-value>/WEB-INF/config/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<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>
由于项目原因,就不上传代码附件了,第一次写帖子,如帖子中有不到的地方,欢迎指正,大家一起交流,共同进步。
分享到:
相关推荐
标题中的“spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码...
在集成Axis2和Spring时,通常会使用Spring的ApplicationContext来加载Axis2配置,并将服务组件作为Spring Bean管理。这样,我们可以在Web服务的生命周期中利用Spring的依赖注入(DI)和面向切面编程(AOP)特性。...
【标题】"Spring3 + Axis2" 在Java世界中,Spring框架是企业级应用开发的首选,而Axis2则是Apache组织提供的一个强大的Web服务引擎,主要用于构建和部署Web服务。"Spring3 + Axis2"的组合是将Spring的依赖注入(DI...
首先,该工程实现了spring MVC、mybatis、axis webservice功能 其次,这个工程很简单,只做了最简单的功能实现 再次,数据库要自己准备 最后,该工程里的src目录下,有一个readme.txt,请下载者仔细阅读,里面有...
当我们需要在Spring项目中提供Web服务时,Axis2是一个常用的工具,它是一个高效的Web服务引擎,支持SOAP 1.1和1.2,以及RESTful服务。本篇文章将详细介绍如何在Spring中集成Axis2来实现Web服务,并且会提及相关的Jar...
Spring 集成 AXIS2 的 Web service 配置方法 Spring 是一个流行的 Java 应用程序框架,它提供了一个灵活的方式来构建企业级应用程序。AXIS2 是一个流行的 Web Service 引擎,它提供了一个强大的方式来构建 Web ...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Apache Axis2则是知名的Web服务引擎,用于处理SOAP协议和创建Web服务。本篇将详细探讨如何将Spring 3.2.5版本与Axis2 1.6.2版本进行整合,以便在Spring环境中...
此外,Spring MVC可以与Axis2结合,提供RESTful Web服务。 8. **项目构建和管理**:`.classpath`和`.project`文件是Eclipse IDE中的项目配置文件,用于跟踪项目的编译路径和构建设置。`src`目录包含了源代码,`...
在IT行业中,开发Web服务是常见的任务,而Axis2和Spring框架的整合为开发者提供了强大的工具来实现这一目标。本文将深入探讨如何利用这两个技术来发布多个WebService,并着重讲解项目管理和整合过程。 首先,让我们...
本主题聚焦于如何使用Spring3 MVC与Hibernate进行整合,以便更好地处理业务逻辑和数据持久化,并结合Axis2发布Web服务,同时利用Quartz进行任务调度。以下将详细介绍这些技术及其整合过程。 **Spring3 MVC** 是...
在本文中,我们将深入探讨如何将Apache Axis2与Spring Boot集成,以构建一个高效、可扩展的Web服务应用。Apache Axis2是Java平台上的一个Web服务框架,它提供了高性能、灵活的服务开发和部署机制。而Spring Boot是...
2. **在Eclipse中配置引入Spring框架、Axis包**:这一步骤涉及到具体的开发环境配置,包括添加必要的库文件、配置项目属性等。由于Axis支持多种扩展功能,可以通过`happyaxis.jsp`页面找到并引入相关的可选包,即使...
标题中的"axis2 + spring3.2.0"指的是在Java Web开发中,将Apache Axis2服务框架与Spring 3.2.0版本的依赖管理相结合的技术应用。Apache Axis2是一个用于构建Web服务和SOA(Service-Oriented Architecture,面向服务...
Spring 和 Axis2 是两个在Java世界中非常重要的技术框架,它们分别在企业级应用开发和服务化方面发挥着关键作用。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)...
Spring整合Axis2经典案例解析 在Java Web服务开发中,Spring框架和Apache Axis2是两个重要的组件。Spring作为一款强大的企业级应用框架,提供了一种模块化、灵活的方式来构建应用程序,而Axis2则是Apache组织提供的...
在本篇博文中,我们将深入探讨如何在Java Web开发中使用Apache Axis2框架与Spring框架进行集成,以实现服务端的高效管理和灵活控制。Apache Axis2是著名的Web服务引擎,而Spring则是流行的Java企业级应用框架,它们...
标题"axis2+spring整合实例"表明了这个压缩包内容是关于如何将Apache Axis2服务框架与Spring框架进行集成的实践案例。Apache Axis2是用于构建Web服务和SOA(Service-Oriented Architecture)的高性能、灵活的开源...
当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...
将Axis2与Spring整合可以让我们在Spring的环境中便捷地创建、管理和部署Web服务,同时利用Spring的众多优点。本文将深入探讨如何将这两者融合,并介绍相关的技术细节。 首先,理解Axis2 Web服务的核心概念。Axis2是...
《 Axis2 与 Spring 整合详解:axis2-spring-1.5.4.jar 入门指南》 在Java Web服务开发领域,Apache Axis2 和 Spring 框架都是不可或缺的重要工具。Apache Axis2 是一个高效且可扩展的Web服务引擎,用于处理SOAP...