`
bibiye
  • 浏览: 172320 次
社区版块
存档分类
最新评论

XFire异常:Could not get property {http://lang.java} classes

阅读更多
程序分为dao、Service、XFire层,不用XFire层时程序测试通过,加上XFire后,出现如下异常,疑为XFire不支持类的泛型。
 
异常 代码
  1. Exception in thread "Thread-2" org.codehaus.xfire.XFireRuntimeException: Couldn't write stream.. Nested exception is org.codehaus.xfire.XFireRuntimeException: Couldn't get property {http://lang.java}classes from bean class cn.cetelem.accounting.model.CsiAcctPmtHistory. Nested exception is java.lang.reflect.InvocationTargetException: null   
  2. org.codehaus.xfire.XFireRuntimeException: Couldn't get property {http://lang.java}classes from bean class cn.cetelem.accounting.model.CsiAcctPmtHistory. Nested exception is java.lang.reflect.InvocationTargetException: null   
  3. java.lang.reflect.InvocationTargetException   
  4.     at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)   
  5.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)   
  6.     at java.lang.reflect.Method.invoke(Unknown Source)   
  7.     at org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:467)   
  8.   
  9. ……   
  10. ……   
  11.   
  12. Caused by: java.lang.StackOverflowError   
  13.     at java.security.AccessController.doPrivileged(Native Method)   
  14.     at java.lang.Class.getClasses(Unknown Source)   
  15.     at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)   
  16.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)   
  17.     at java.lang.reflect.Method.invoke(Unknown Source)   
  18.     at org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:467)   
  19.     at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:402)   
  20.     at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:417)   
  21. …………   
  22. …………   
  23.     at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:417)   
  24. 2007-10-15 21:31:14,953 ERROR [org.codehaus.xfire.service.binding.PostInvocationHandler] - 
  25. 2007-10-15 21:31:14,953 ERROR [org.codehaus.xfire.handler.DefaultFaultHandler] -    
  26. org.codehaus.xfire.XFireRuntimeException: Couldn't read stream.. Nested exception is com.ctc.wstx.exc.WstxIOException: Write end dead   
  27. com.ctc.wstx.exc.WstxIOException: Write end dead   
  28.     at com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:650)   
  29.     at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1071)   
  30.     at org.codehaus.xfire.transport.local.LocalChannel.sendViaNewChannel(LocalChannel.java:175)   
  31.     at org.codehaus.xfire.transport.local.LocalChannel.send(LocalChannel.java:75)   
  32.     at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)   
  33. …………   
  34. …………  

 

关键问题出在Page对象。

java 代码
  1.   
  2. public class Page<T><t></t><t></t> implements Serializable {   
  3.     private Class<T><t></t><t></t> entityClass;   
  4.   
  5.     /**  
  6.      * long:serialVersionUID  
  7.      */  
  8.     private static final long serialVersionUID = -5732135470845307885L;   
  9.   
  10.     public static int DEFAULT_PAGE_SIZE = 10;   
  11.   
  12.     private int pageSize = DEFAULT_PAGE_SIZE; // records per page   
  13.   
  14.     private int start; // the location of the first record of list in curren   
  15.   
  16.   
  17.     private List<T><t></t><t></t> list; // records in current page   
  18.   
  19.     private int totalCount; // total records   
  20.   
  21.     private int currentPageNo;   
  22.        
  23.     private int totalPageCount;   
  24.   
  25.   
  26.     /**  
  27.      * @return Returns the entityClass.  
  28.      */  
  29.     public Class<T><t></t><t></t> getEntityClass() {   
  30.         return this.entityClass;   
  31.     }   
  32.   
  33.     /**  
  34.      * @param entityClass  
  35.      *            The entityClass to set.  
  36.      */  
  37.     public void setEntityClass(Class<T><t></t><t></t> entityClass) {   
  38.         this.entityClass = entityClass;   
  39.     }   
  40.   
  41.   
  42.     /**  
  43.      * construct method by default.  
  44.      *   
  45.      * @param start  
  46.      *            the location of the first record of list in current page ,  
  47.      *            starting form 0.  
  48.      * @param totalSize  
  49.      *            total pages  
  50.      * @param pageSize  
  51.      *            records per page  
  52.      * @param list  
  53.      *            records in current page  
  54.      */  
  55.     public Page(int start, int totalSize, int pageSize, List<T><t></t><t></t> list,   
  56.             Class<T><t></t><t></t> entityClass) {   
  57.          this.entityClass = entityClass;   
  58.         System.out.println("Page.getEntityClass()=" + entityClass.getName());   
  59.         this.pageSize = pageSize;   
  60.         this.start = start;   
  61.         this.totalCount = totalSize;   
  62.         this.list = list;   
  63.     }   
  64.   
  65.     /**  
  66.      * Get total records.  
  67.      */  
  68.     public int getTotalCount() {   
  69.         return this.totalCount;   
  70.     }   
  71.   
  72.     /**  
  73.      * Get total pages.  
  74.      */  
  75.     public int getTotalPageCount() {   
  76.         if (totalCount % pageSize == 0)   
  77.             totalPageCount = totalCount / pageSize;   
  78.         else  
  79.             totalPageCount = totalCount / pageSize + 1;   
  80.         return totalPageCount;   
  81.     }   
  82.   
  83.     /**  
  84.      * Get records per page.  
  85.      */  
  86.     public int getPageSize() {   
  87.         return pageSize;   
  88.     }   
  89.   
  90.     /**  
  91.      * Get records in current page.  
  92.      */  
  93.     public List<T><t></t><t></t> getList() {   
  94.         return list;   
  95.     }   
  96.   
  97.     /**  
  98.      * Get current page number,starting from 1.  
  99.      */  
  100.     public int getCurrentPageNo() {   
  101.         currentPageNo = start / pageSize + 1;   
  102.         return currentPageNo;   
  103.     }   
  104.   
  105.     /**  
  106.      * Judge whether there is next page.  
  107.      */  
  108.     public boolean hasNextPage() {   
  109.         return this.getCurrentPageNo() < this.getTotalPageCount() - 1;   
  110.     }   
  111.   
  112.     /**  
  113.      * Judge whether there is pre page.  
  114.      */  
  115.     public boolean hasPreviousPage() {   
  116.         return this.getCurrentPageNo() > 1;   
  117.     }   
  118.   
  119.     /**  
  120.      * Get the location of the first record of list in any page. It use default  
  121.      * value of records per page.  
  122.      *   
  123.      * @see #getStartOfPage(int,int)  
  124.      */  
  125.     protected static int getStartOfPage(int pageNo) {   
  126.         return getStartOfPage(pageNo, DEFAULT_PAGE_SIZE);   
  127.     }   
  128.   
  129.     /**  
  130.      * Get the location of the first record of list in any page.  
  131.      *   
  132.      * @param pageNo  
  133.      *            starting from 1.  
  134.      * @param pageSize  
  135.      *            records per pages.  
  136.      * @return the first record in the page.  
  137.      */  
  138.     public static int getStartOfPage(int pageNo, int pageSize) {   
  139.         return (pageNo - 1) * pageSize;   
  140.     }   
  141.   
  142.     /**  
  143.      * @return Returns the start.  
  144.      */  
  145.     public int getStart() {   
  146.         return this.start;   
  147.     }   
  148.   
  149.     /**  
  150.      * @param start  
  151.      *            The start to set.  
  152.      */  
  153.     public void setStart(int start) {   
  154.         this.start = start;   
  155.     }   
  156.   
  157.     /**  
  158.      * @param pageSize  
  159.      *            The pageSize to set.  
  160.      */  
  161.     public void setPageSize(int pageSize) {   
  162.         this.pageSize = pageSize;   
  163.     }   
  164.   
  165.     /**  
  166.      * @param list  
  167.      *            The list to set.  
  168.      */  
  169.     public void setList(List<T><t></t><t></t> list) {   
  170.         this.list = list;   
  171.     }   
  172.   
  173.     /**  
  174.      * @param totalCount  
  175.      *            The totalCount to set.  
  176.      */  
  177.     public void setTotalCount(int totalCount) {   
  178.         this.totalCount = totalCount;   
  179.     }   
  180.   
  181.     /**  
  182.      * @param currentPageNo  
  183.      *            The currentPageNo to set.  
  184.      */  
  185.     public void setCurrentPageNo(int currentPageNo) {   
  186.         this.currentPageNo = currentPageNo;   
  187.     }   
  188.   
  189.     /**  
  190.      * @param totalPageCount The totalPageCount to set.  
  191.      */  
  192.     public void setTotalPageCount(int totalPageCount) {   
  193.         this.totalPageCount = totalPageCount;   
  194.     }   
  195. }  

如果为Page对象加上aegis则程序正常运行。

Page.aegis.xml
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <mappings xmlns:my="http://my.bjvsp.tongtech.com">  
  3.     <mapping name="my:User">  
  4.         <property name="list"  
  5.             componentType="cn.cetelem.accounting.model.CsiAcctPmtHistory" />  
  6.     mapping>  
  7. mappings>  

XFire的版本,我试过1.2.2和1.2.6。 搞了一天,还没找到答案

PS --  在codehaus上也找到类似的: jira.codehaus.org/browse/XFIRE-1002

分享到:
评论
3 楼 小笨熊 2008-01-18  
建议先做一个简单的例子,我用的范型是支持的,你再好好找找!
2 楼 peigen 2008-01-16  
1.2以上支持泛型

我仍用了aegis配置文件
1 楼 bibiye 2007-10-16  
目前貌似无法解决!
只好:
1.加配置文件;
2.Page构造放到client端。

希望能听到不同的声音

相关推荐

    JAVA Mail Application

    JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。它提供了全面的API,使得开发者能够方便地发送、接收和管理邮件。这个库支持SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网...

    常用的Eclipse插件的在线更新地址

    5. **Lomboz**:面向J2EE项目的Eclipse插件,提供了一系列针对Java EE应用的开发支持。更新地址:`http://www.objectlearn.com/index.jsp` 6. **Spring IDE**:专注于Spring框架的开发工具,简化了Spring项目的设计...

    java之webservice_aegis.xml学习

    &lt;parameter index="0" componentType="java.lang.String"/&gt; ``` - **`index`**: 参数的序号,从0开始。 - **`componentType`**: 集合参数内包含的类型。 如果方法有多个参数,仅需配置集合类型的参数即可。 #### ...

    Java6开发WebService详细啊.docx

    在Java6中,开发Web Service变得更加简单和直接,无需依赖额外的框架如CXF、Axis2或XFire。Java6引入了内置的JAX-WS(Java API for XML Web Services)支持,使得创建和发布Web Service成为可能,这大大简化了项目的...

    java调用net开发的webservice实例

    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:30) at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) at org.codehaus.xfire.client....

    xfire spring例子

    XFire是一个早期的开源Web服务框架,它允许开发者创建和消费SOAP服务,而Spring则是一个广泛使用的Java企业级应用开发框架。在这个例子中,我们将深入理解如何在Spring环境中配置和利用XFire来构建和消费Web服务。 ...

    xfire 5分钟开发一个完整实例.doc

    - 访问XFire官方网站(http://xfire.codehaus.org/)下载XFire 1.2.6版本的压缩包。 - 解压压缩包,获取所需的`jar`包。 2. **从MyEclipse安装目录获取`jar`包**: - 从路径`...\myeclipse\eclipse\plugins\...

    xfire实现web service入门实例

    Xfire(现更名为CXF)是Java平台上一个流行的开源框架,用于构建和部署Web服务。作为一个初学者,理解如何使用Xfire来实现Web服务是非常基础且重要的一步。下面将详细介绍Xfire实现Web服务的基础知识。 首先,我们...

    Xfire Web Service简单实例参考

    这是我自己经过琢磨在工作中使用了一段时间Web Service后,自己学习Xfire的Web Service后编写的,随后发现Web Service其实就是这样简单。包中油服务器端代码,也有客户端代码,也有一个使用说明。要是你也想学习接触...

    Java使用XFire调用WebService接口.docx

    &lt;servlet-class&gt;org.codehaus.xfire.transport.servlet.XFireConfigurableServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;0&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt; ...

    WebService开发快速起步

    &lt;servlet-class&gt;org.codehaus.xfire.transport.http.XFireConfigurableServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;0&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;...

    js调用WEBSERVICE通用函数(JAVA OR .NET)

    本文将详细介绍如何使用JavaScript调用基于Java的WebService(使用Xfire框架)以及调用基于.NET的WebService。 首先,让我们了解什么是WebService。WebService是一种基于Web的应用程序接口,它使用标准的XML...

    XFire返回自定义实体类实例

    Service service = xfire.createService(new ServiceInfo(UserService.class.getName(), UserService.class)); service.setImplementation(new UserServiceImpl()); xfire.getServiceRegistry().register(service...

    Java实训教程 Java软件开发实战 Java开发框架介绍 webservices-cxf 共30页.pptx

    ### Java实训教程知识点详解 #### 一、Web Service 技术概述 - **定义与功能**: - Web Service是一种采用HTTP协议进行通信的技术,它主要用于解决不同操作系统或编程环境下的系统之间相互调用的问题。例如,可以...

    XFIRE短信接口

    4. **配置XFIRE**:通过XFIRE的配置文件(通常为`xfire.xml`),可以指定服务的URL、数据绑定策略、安全性设置等关键参数。例如,可以通过以下配置启用Spring框架集成: ```xml &lt;!-- 其他配置 --&gt; &lt;spring:...

    Axsis and XFire Demo src code

    XFire主页:http://xfire.codehaus.org/ XFire下载:http://xfire.codehaus.org/Download 去以上站点下载axis最新包 和XFire最新包,包内有axis和XFire依赖的其他jar包。 1.1.1 新建工程 1.1.2 axis依赖文件 ...

    Java6开发WebService入门

    在早期的Web服务开发中,开发者通常会使用CXF、Axis2、XFire等工具来构建基于Java的应用程序。这些工具之所以被广泛采用,主要是因为它们能够提供广泛的兼容性和灵活性,并且适应多种不同的Java版本环境。然而,在...

Global site tag (gtag.js) - Google Analytics