`
longgangbai
  • 浏览: 7340603 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring 和Axis2整合相关那些事

阅读更多

Axis2优劣:

现在用axis2开发一个webservice工程,虽说是webservice的一个新框架,但我并没有发现他有多么的好用,反而遇到了很多麻烦的问题:

1、axis2不支持事务。

     对数据库增删改查一般都需要事务处理的,但是在对外发布的接口中是不能配置事务的。

     解决方法:或者写一个代理类或者直接在dao中进行事务管理。

2、axis2不支持方法重载。

     在对外发布的接口中不能使用方法重载,

     [WARN] We don't support method overloading. Ignoring [updateClassifyTask]
     [WARN] We don't support method overloading. Ignoring [updateClassifyTask]
     [WARN] We don't support method overloading. Ignoring [updateClassifyTask]

     如果你写了多个重名的方法,在该service中只会注册一个。

     解决方法:无。要么更改成不同的方法名要么在传参上想办法

3、AXIS2 1.4.1 does not support java.util.Date type

     Time portion of java.util.Date is missing from SOAP response in Axis2 1.5

     瞧瞧axis2 的这些个bug,使用起来太不方便了。

     虽然Apache的官方网站的bug页上有解决方案,但是我把DateServuce。aar文件考下来后仍然报相同的错误:

    [ERROR] date string can not be less than 19 charactors

    Caused by: java.lang.NumberFormatException: date string can not be less than 19 charactors

    也不知道是怎么个意思,是把日期转换一下吗?好郁闷- - !

    Axis2 1.5只能返回日期部分,时间部分丢失了!

    解决方法:把Date类型都改成String类型的,这样是最安全的,但可能跟要求不符,应该不能算是一个好的解决方案吧。

4、axis2不能传递list类型的数据集合。

    解决方法:将list转换成数组类型。这个还不算麻烦吧。

 

 

package com.etrip.axis2;

import java.io.Serializable; 
/**
 * 
 * @Title: TODO
 * @Description: 实现TODO
 * @Copyright:Copyright (c) 2011
 * @Company:
 * @Date:2012-12-29
 * @author 
 * @version 1.0
 */
public class User implements Serializable { 
  
    private static final long serialVersionUID = 1L; 
    private int id; 
    private String name; 
    private String address; 
    private String email; 
  
    public int getId() { 
        return id; 
    } 
  
    public void setId(int id) { 
        this.id = id; 
    } 
  
    public String getName() { 
        return name; 
    } 
  
    public void setName(String name) { 
        this.name = name; 
    } 
  
    public String getAddress() { 
        return address; 
    } 
  
    public void setAddress(String address) { 
        this.address = address; 
    } 
  
    public String getEmail() { 
        return email; 
    } 
  
    public void setEmail(String email) { 
        this.email = email; 
    } 
  
} 

 

 

package com.etrip.axis2;

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

import org.springframework.stereotype.Service;

/**
 * 
 * @Title: TODO
 * @Description: 实现TODO
 * @Copyright:Copyright (c) 2011
 * @Company
 * @Date:2012-12-24
 * @author 
 * @version 1.0
 */
@Service
public class UserService {
	/**
	 * 传递数组
	 * @return
	 */
    public String[][] getTwoArray() { 
        return new String[][] { { "中国", "北京" }, { "日本", "东京" }}; 
    } 
    
    /**
     * 传递非字符串
     * @param b
     * @param len
     * @return
     */
    public String upload4Byte(byte[] b, int len) { 
    	return String.valueOf(b)+len;
    }
    /**
     * 传递字符串
     * @param userName
     * @return
     */
    public String hello(String userName){
    	return "Hello ,"+userName;
    }
    /**
     * 传输对象
     * @return
     */
    public User getUer() { 
        User user = new User(); 
        user.setAddress("JingsanRoad"); 
        user.setEmail("uer@123.com"); 
        user.setName("spark"); 
        user.setId(2); 
        return user; 
    } 
} 

 

 

spring-app-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:flex="http://www.springframework.org/schema/flex"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/flex
	http://www.springframework.org/schema/flex/spring-flex-1.5.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	<context:component-scan base-package="*" />
	<context:annotation-config/>
	<bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
</beans>

 

 

WebContent/WEB-INF/services/axis/META-INF/services.xml

<?xml version="1.0" encoding="UTF-8"?>
<service name="userService">
	<parameter name="ServiceObjectSupplier">
		org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
	</parameter>
	<parameter name="load-on-startup">true</parameter>
	<parameter name="SpringBeanName">userService</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>

 

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/spring-*.xml
    </param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>
  <display-name>Axis2SpringWS</display-name>
  <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.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
  </servlet-mapping>
</web-app>

 

 

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" 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 http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd">
    <wls:weblogic-version>10.3.6</wls:weblogic-version>
    <wls:context-root>Axis2SpringWS</wls:context-root>
    <wls:container-descriptor>
     <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>
</wls:weblogic-web-app>

 

 

详细参考:

Apache Axis2 User's Guide

http://axis.apache.org/axis2/java/core/docs/userguide.html

Axis2 Integration with the Spring Framework

http://axis.apache.org/axis2/java/core/docs/spring.html

 

POJO Web Services using Apache Axis2

http://axis.apache.org/axis2/java/core/docs/pojoguide.html

 

JAX-WS Guide

http://axis.apache.org/axis2/java/core/docs/jaxws-guide.html

 

 

分享到:
评论
2 楼 i1286195289 2016-03-14  
[flash=200,200][url][img][list]
[*]
引用
[/list][/img][/url][/flash]
1 楼 i1286195289 2016-03-14  
  

相关推荐

    spring与axis的整合

    #### 一、Spring与Axis整合概述 Spring与Axis的整合,是指在Java环境中利用Spring框架管理和配置Axis Web服务的一种技术。这种整合方式充分利用了Spring框架的强大功能(如依赖注入、面向切面编程等)以及Axis作为...

    spring axis2整合

    整合Spring和Axis2的主要目的是利用Spring的灵活性和管理能力来控制Axis2的生命周期,以及通过Spring的IoC容器管理Web服务的部署和调用。这样可以避免在代码中硬编码Web服务客户端和服务器端的实例化,使得代码更加...

    spring和axis 整合

    当我们谈论"Spring和Axis2整合"时,我们实际上是在讨论如何将Spring的优秀特性应用到基于Axis2的Web服务中,以提高服务的管理和维护效率。这种整合通常涉及到以下关键步骤: 1. **配置Spring上下文**:首先,我们...

    Spring整合axis2经典

    整合Spring和Axis2,主要是为了利用Spring的依赖注入和管理能力,以及Axis2的Web服务处理能力。整合过程主要包括以下步骤: - 配置Spring容器:首先在Spring配置文件中定义Web服务的bean,这些bean通常代表了服务...

    使用Axis2整合Spring(二)

    将Axis2与Spring整合的主要目的是利用Spring的DI和AOP特性来管理和控制Web服务的生命周期。这可以通过在Axis2中使用SpringBeanServiceHost和SpringBeanAxisServlet实现。SpringBeanServiceHost允许将Spring的bean...

    Spring集成axis2实现webservice所用到的包

    通过整合Spring和Axis2,我们可以利用Spring的依赖注入(DI)和管理功能,同时享受Axis2的高性能和易用性。 集成Spring和Axis2的过程大致分为以下几个步骤: 1. **配置Axis2**:在Spring项目中,首先需要将Axis2的...

    axis2整合spring

    整合Axis2和Spring的主要目标是利用Spring的DI和AOP特性来增强Axis2的服务管理能力,同时利用Axis2的Web服务处理能力。以下是整合过程中的关键步骤: 1. **配置Spring上下文**:创建一个Spring配置文件,定义服务...

    Axis2与Spring整合发布多个WebService

    在IT行业中,开发Web服务是常见的任务,而Axis2和Spring框架的整合为开发者提供了强大的工具来实现这一目标。本文将深入探讨如何利用这两个技术来发布多个WebService,并着重讲解项目管理和整合过程。 首先,让我们...

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    Spring集成AXIS2的Web_service配置方法

    将 Spring 集成 AXIS2 可以实现基于 Spring 的 Web 服务配置,该配置方法可以提高开发效率和系统可维护性。 一、配置 Spring 项目 首先,需要在 Spring 项目中添加 AXIS2 的依赖项,包括 axis2-spring-1.4.1.jar ...

    spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s

    标题中的“spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码...

    springboot集成axis2-1.7.9实例

    通过将两者结合,我们可以利用Spring Boot的便利性和Axis2的Web服务功能。 首先,集成Spring Boot和Axis2需要以下几个关键步骤: 1. **添加依赖**:在Spring Boot的`pom.xml`文件中,我们需要引入Axis2和Spring ...

    axis2+spring整合实例

    **标题与描述解析** 标题"axis2+spring整合实例"表明了这个压缩包内容是关于如何将Apache Axis2...同时,阅读相关的文档和教程,比如Spring官方文档、Apache Axis2用户指南等,将有助于深入掌握这两个框架的整合技巧。

    Axis2WebService与Spring的整合

    将Axis2与Spring整合可以让我们在Spring的环境中便捷地创建、管理和部署Web服务,同时利用Spring的众多优点。本文将深入探讨如何将这两者融合,并介绍相关的技术细节。 首先,理解Axis2 Web服务的核心概念。Axis2是...

    axis2+spring2.5整合(webservice)

    当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...

    spring+axis2_xfire整合的webservice

    【Spring + Axis2 + XFire 整合的Web Service】是一种在Java环境下构建Web服务的解决方案,它结合了Spring框架的灵活性和Axis2、XFire的Web服务处理能力。Web服务是一个基于开放标准的分布式计算模型,允许不同系统...

    spring4和hibernate4.2和axis2整合

    6. 测试和调用:通过SOAP客户端或者REST客户端测试部署的服务,验证Spring、Hibernate和Axis2的整合是否成功。 这种整合方式为开发人员提供了强大且灵活的框架,能够处理复杂的业务逻辑,同时提供Web服务接口对外...

    spring3 + axis2

    在实际项目中,"Spring3 + Axis2"的整合可能涉及到源码级别的工作,包括编写服务接口和服务实现,配置Spring容器,以及处理Axis2的部署描述符。同时,开发过程中会用到一系列工具,如IDE(如Eclipse、IntelliJ IDEA...

    axis2 + spring3.2.0

    1. **引入依赖**:在项目中添加Apache Axis2和Spring的相关库。 2. **配置Spring**:创建Spring配置文件,定义服务的bean,使用@Autowired或@Resource进行依赖注入。 3. **创建服务**:使用Spring的BeanFactory或...

    spring集成axis发布webservice源码

    spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码

Global site tag (gtag.js) - Google Analytics