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转换成数组类型。这个还不算麻烦吧。

 

 

Java代码   收藏代码
  1. package com.etrip.axis2;  
  2.   
  3. import java.io.Serializable;   
  4. /** 
  5.  *  
  6.  * @Title: TODO 
  7.  * @Description: 实现TODO 
  8.  * @Copyright:Copyright (c) 2011 
  9.  * @Company: 
  10.  * @Date:2012-12-29 
  11.  * @author  
  12.  * @version 1.0 
  13.  */  
  14. public class User implements Serializable {   
  15.     
  16.     private static final long serialVersionUID = 1L;   
  17.     private int id;   
  18.     private String name;   
  19.     private String address;   
  20.     private String email;   
  21.     
  22.     public int getId() {   
  23.         return id;   
  24.     }   
  25.     
  26.     public void setId(int id) {   
  27.         this.id = id;   
  28.     }   
  29.     
  30.     public String getName() {   
  31.         return name;   
  32.     }   
  33.     
  34.     public void setName(String name) {   
  35.         this.name = name;   
  36.     }   
  37.     
  38.     public String getAddress() {   
  39.         return address;   
  40.     }   
  41.     
  42.     public void setAddress(String address) {   
  43.         this.address = address;   
  44.     }   
  45.     
  46.     public String getEmail() {   
  47.         return email;   
  48.     }   
  49.     
  50.     public void setEmail(String email) {   
  51.         this.email = email;   
  52.     }   
  53.     
  54. }   

 

 

Java代码   收藏代码
  1. package com.etrip.axis2;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.stereotype.Service;  
  7.   
  8. /** 
  9.  *  
  10.  * @Title: TODO 
  11.  * @Description: 实现TODO 
  12.  * @Copyright:Copyright (c) 2011 
  13.  * @Company 
  14.  * @Date:2012-12-24 
  15.  * @author  
  16.  * @version 1.0 
  17.  */  
  18. @Service  
  19. public class UserService {  
  20.     /** 
  21.      * 传递数组 
  22.      * @return 
  23.      */  
  24.     public String[][] getTwoArray() {   
  25.         return new String[][] { { "中国""北京" }, { "日本""东京" }};   
  26.     }   
  27.       
  28.     /** 
  29.      * 传递非字符串 
  30.      * @param b 
  31.      * @param len 
  32.      * @return 
  33.      */  
  34.     public String upload4Byte(byte[] b, int len) {   
  35.         return String.valueOf(b)+len;  
  36.     }  
  37.     /** 
  38.      * 传递字符串 
  39.      * @param userName 
  40.      * @return 
  41.      */  
  42.     public String hello(String userName){  
  43.         return "Hello ,"+userName;  
  44.     }  
  45.     /** 
  46.      * 传输对象 
  47.      * @return 
  48.      */  
  49.     public User getUer() {   
  50.         User user = new User();   
  51.         user.setAddress("JingsanRoad");   
  52.         user.setEmail("uer@123.com");   
  53.         user.setName("spark");   
  54.         user.setId(2);   
  55.         return user;   
  56.     }   
  57. }   

 

 

spring-app-context.xml

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:flex="http://www.springframework.org/schema/flex"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.     http://www.springframework.org/schema/flex  
  9.     http://www.springframework.org/schema/flex/spring-flex-1.5.xsd  
  10.     http://www.springframework.org/schema/context  
  11.     http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
  12.     <context:component-scan base-package="*" />  
  13.     <context:annotation-config/>  
  14.     <bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />  
  15. </beans>  

 

 

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

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <service name="userService">  
  3.     <parameter name="ServiceObjectSupplier">  
  4.         org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier  
  5.     </parameter>  
  6.     <parameter name="load-on-startup">true</parameter>  
  7.     <parameter name="SpringBeanName">userService</parameter>  
  8.     <messageReceivers>  
  9.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
  10.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
  11.     </messageReceivers>  
  12. </service>  

 

 

web.xml

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <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">  
  3.   <context-param>  
  4.     <param-name>contextConfigLocation</param-name>  
  5.     <param-value>classpath:spring/spring-*.xml  
  6.     </param-value>  
  7.   </context-param>  
  8.   <listener>  
  9.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  10.   </listener>  
  11.   <listener>  
  12.     <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
  13.   </listener>  
  14.   <display-name>Axis2SpringWS</display-name>  
  15.   <servlet>  
  16.     <servlet-name>AxisServlet</servlet-name>  
  17.     <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
  18.     <load-on-startup>1</load-on-startup>  
  19.   </servlet>  
  20.   <servlet-mapping>  
  21.     <servlet-name>AxisServlet</servlet-name>  
  22.     <url-pattern>/services/*</url-pattern>  
  23.   </servlet-mapping>  
  24.   <welcome-file-list>  
  25.     <welcome-file>index.html</welcome-file>  
  26.     <welcome-file>index.htm</welcome-file>  
  27.     <welcome-file>index.jsp</welcome-file>  
  28.     <welcome-file>default.html</welcome-file>  
  29.     <welcome-file>default.htm</welcome-file>  
  30.     <welcome-file>default.jsp</welcome-file>  
  31.   </welcome-file-list>  
  32.   <servlet>  
  33.     <display-name>Axis Admin Servlet</display-name>  
  34.     <servlet-name>AdminServlet</servlet-name>  
  35.     <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
  36.     <load-on-startup>100</load-on-startup>  
  37.   </servlet>  
  38.   <servlet-mapping>  
  39.     <servlet-name>AdminServlet</servlet-name>  
  40.     <url-pattern>/servlet/AdminServlet</url-pattern>  
  41.   </servlet-mapping>  
  42. </web-app>  

 

 

weblogic.xml

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <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">  
  3.     <wls:weblogic-version>10.3.6</wls:weblogic-version>  
  4.     <wls:context-root>Axis2SpringWS</wls:context-root>  
  5.     <wls:container-descriptor>  
  6.      <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>  
  7.     </wls:container-descriptor>  
  8. </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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值