`
nbaertuo
  • 浏览: 76079 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

DWR 和 OpenSessionInViewFilter

阅读更多

项目中使用了Spring的OpenSessionInViewFilter,使得Hibernate的延时加载很方便,同时我也把DWR影射进取了,代码如下。

    <filter></filter>
        <filter-name></filter-name>hibernateFilter
        <filter-class></filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        <init-param></init-param>
    <param-name></param-name> singleSession
    <param-value></param-value> true
  
   

    <filter-mapping></filter-mapping>
        <filter-name></filter-name>securityFilter
        <url-pattern></url-pattern>/*
   

 

这样DWR就不会抱延时加载的错误了,但是它在把javaBean转换成JS的时候,调用了所有的Bean中的Get方法,这样Hibernate就把所有和这关联的属性都加载进来了,这样效率自然变低了,尤其是在加载Set的时候,一对多的时候,很慢,经常出错。,。。。。。。。。。

以上是我猜想的错误,就这样我想到修改源代码,个人适用的DWR版本是

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_07-87 ("Apple Computer, Inc.")

把其中的org.directwebremoting.convert.CollectionConverter文件下这个方法修改为

 这样可以不加载Set了,其他属性还是加载,因为平时需要用到其他属性。

完成。。。。OK

public OutboundVariable convertOutbound(Object data, OutboundContext outctx) throws MarshallException
    {
        // Where we collect out converted children
        Map ovs = new TreeMap();

        // We need to do this before collecing the children to save recurrsion
        ObjectOutboundVariable ov = new ObjectOutboundVariable(outctx);
        outctx.put(data, ov);

        try
        {
            Map properties = getPropertyMapFromObject(data, true, false);
            for (Iterator it = properties.entrySet().iterator(); it.hasNext();)
            {
                Map.Entry entry = (Map.Entry) it.next();
                String name = (String) entry.getKey();
                Property property = (Property) entry.getValue();

                Object value = property.getValue(data);
                //如果为Set跳过------------------------------------------------
                if(value!=null&&value.getClass()==org.hibernate.collection.PersistentSet.class){
                    continue;
               
                }OutboundVariable nested = getConverterManager().convertOutbound(value, outctx);

                ovs.put(name, nested);
            }
        }
        catch (MarshallException ex)
        {
            throw ex;
        }
        catch (Exception ex)
        {
            throw new MarshallException(data.getClass(), ex);
        }

        ov.init(ovs, getJavascript());

        return ov;
    }

分享到:
评论
1 楼 yelongkun 2007-07-10  
搞点简单的不好呀,看不懂呀

相关推荐

    dwr和ajax技术

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript和Java在浏览器与服务器之间进行双向通信,而Ajax(Asynchronous JavaScript and XML)则是一种通过JavaScript实现异步数据交换和页面更新的技术,无需...

    dwr和ssh的集成源码

    **标题:“dwr和ssh的集成源码”** 在IT领域,DWR(Direct Web Remoting)和SSH(Struts + Spring + Hibernate)是两种常见的Java Web开发框架。本资源提供了一个简单的DWR与SSH集成的源代码示例,虽然可能在规范性...

    dwr和简单的文件上传

    这通常包括创建一个`dwr.xml`配置文件,其中定义了哪些Java类和方法可以被JavaScript调用。例如,你可以定义一个处理文件上传的类,如`FileUploadService`,并在其中声明一个接收文件的`uploadFile`方法。 ```xml ...

    dwr和ajax使用demo

    DWR(Direct Web Remoting)是一种在Web应用程序中实现异步JavaScript和XML(Ajax)的方法,它简化了客户端和服务器之间的通信,使得动态更新网页变得更加简单。DWR允许JavaScript直接调用Java方法,就像它们在同一...

    dwr和spring集成简单例子

    确保引入了DWR的核心库和Spring的相关模块,如Spring Web和Spring Context。 接下来,配置Spring。在Spring的配置文件(如`applicationContext.xml`)中,定义DWR相关的bean。这些bean包括`DWRConfiguration`,它...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    Direct Web Remoting (DWR) 是一个开源的Java库,允许Web应用程序在浏览器和服务器之间进行实时通信,绕过传统的Ajax限制。这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明...

    dwr dwrdwr

    dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr

    DWR和时间控件

    DWR,全称为Direct Web Remoting,是一种Ajax优化框架,旨在简化Web应用程序的开发,使得JavaScript和服务器端的Java代码可以进行直接、实时的通信。这个框架的核心思想是通过JavaScript接口来调用服务器上的Java...

    dwr,jar和dwr-noncla.jar

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在Web应用程序中轻松地进行JavaScript和服务器端Java代码之间的交互。DWR使得AJAX(Asynchronous JavaScript and XML)开发更为简便,允许开发者在不刷新整个...

    dwr1+dwr2+dwr3 jar包

    这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker org.directwebremoting.servlet.DwrServlet &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; ...

    dwr和spring和struts2整合

    在IT行业中,Web应用程序开发是核心领域之一,而Spring、Struts2和Direct Web Remoting (DWR) 是其中常见的三大框架。它们分别扮演着不同的角色,以提高开发效率和提供更好的用户体验。本文将深入探讨如何将这三者...

    dwr实现ajax功能ajax+dwr

    在提供的文件中,`DWR 中文帮助.pdf`可能包含了DWR的详细文档和使用指南,帮助开发者更好地理解DWR的配置和API。`总结DWR的步骤.txt`可能是对实施DWR步骤的简洁概述,方便快速参考。`Ajax主要代码.txt`可能包含了...

    dwr笔记 dwr自学资料

    DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的双向通信。这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对...

    dwr+ssh项目

    1. **引入dwr.jar** - 将DWR的jar包添加到项目的lib目录下,这是使用DWR的基础,因为该jar包包含了DWR的所有核心类和函数。 2. **创建dwr.xml** - 在WEB-INF目录下创建dwr.xml配置文件。这个文件用于配置DWR的行为...

    DWR中文文档DWR

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器...通过深入学习这份DWR中文文档,开发者不仅可以掌握DWR的基本用法,还能了解到如何在实际项目中有效利用DWR提升Web应用的性能和用户体验。

    dwr2.0 dwr3.0 jar包

    这个主题主要围绕DWR的两个主要版本——DWR 2.0和DWR 3.0,以及它们与jar包的关联。 首先,DWR 2.0是DWR项目的一个早期版本,它引入了核心的远程方法调用(Remote Method Invocation, RMI)功能,使得JavaScript...

    DWR的学习资料,DWR学习必备

    DWR开发培训.ppt、DWR.ppt:这些可能是DWR的培训演示文稿,包含了一系列主题的讲解,可能涵盖了DWR的工作原理、核心组件、使用示例和最佳实践。通过这些PPT,你可以系统地学习DWR,并通过实例加深理解。 DWR与界面...

    dwr demo dwr简单使用

    在"Dwr demo - Dwr简单使用"这个项目中,你可以通过以下步骤了解和学习DWR的基本用法: 1. **环境准备**:首先确保你有Eclipse IDE,并且已经安装了Java Development Kit (JDK)。由于DWR是一个Java库,所以你需要一...

Global site tag (gtag.js) - Google Analytics