`
longgangbai
  • 浏览: 7250241 次
  • 性别: 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  
  

相关推荐

Global site tag (gtag.js) - Google Analytics