项目中使用了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;
}
分享到:
- 2007-06-28 16:57
- 浏览 2488
- 评论(1)
- 论坛回复 / 浏览 (1 / 2980)
- 查看更多
相关推荐
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript和Java在浏览器与服务器之间进行双向通信,而Ajax(Asynchronous JavaScript and XML)则是一种通过JavaScript实现异步数据交换和页面更新的技术,无需...
**标题:“dwr和ssh的集成源码”** 在IT领域,DWR(Direct Web Remoting)和SSH(Struts + Spring + Hibernate)是两种常见的Java Web开发框架。本资源提供了一个简单的DWR与SSH集成的源代码示例,虽然可能在规范性...
这通常包括创建一个`dwr.xml`配置文件,其中定义了哪些Java类和方法可以被JavaScript调用。例如,你可以定义一个处理文件上传的类,如`FileUploadService`,并在其中声明一个接收文件的`uploadFile`方法。 ```xml ...
DWR(Direct Web Remoting)是一种在Web应用程序中实现异步JavaScript和XML(Ajax)的方法,它简化了客户端和服务器之间的通信,使得动态更新网页变得更加简单。DWR允许JavaScript直接调用Java方法,就像它们在同一...
确保引入了DWR的核心库和Spring的相关模块,如Spring Web和Spring Context。 接下来,配置Spring。在Spring的配置文件(如`applicationContext.xml`)中,定义DWR相关的bean。这些bean包括`DWRConfiguration`,它...
Direct Web Remoting (DWR) 是一个开源的Java库,允许Web应用程序在浏览器和服务器之间进行实时通信,绕过传统的Ajax限制。这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明...
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
DWR,全称为Direct Web Remoting,是一种Ajax优化框架,旨在简化Web应用程序的开发,使得JavaScript和服务器端的Java代码可以进行直接、实时的通信。这个框架的核心思想是通过JavaScript接口来调用服务器上的Java...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在Web应用程序中轻松地进行JavaScript和服务器端Java代码之间的交互。DWR使得AJAX(Asynchronous JavaScript and XML)开发更为简便,允许开发者在不刷新整个...
这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
在IT行业中,Web应用程序开发是核心领域之一,而Spring、Struts2和Direct Web Remoting (DWR) 是其中常见的三大框架。它们分别扮演着不同的角色,以提高开发效率和提供更好的用户体验。本文将深入探讨如何将这三者...
在提供的文件中,`DWR 中文帮助.pdf`可能包含了DWR的详细文档和使用指南,帮助开发者更好地理解DWR的配置和API。`总结DWR的步骤.txt`可能是对实施DWR步骤的简洁概述,方便快速参考。`Ajax主要代码.txt`可能包含了...
DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的双向通信。这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对...
1. **引入dwr.jar** - 将DWR的jar包添加到项目的lib目录下,这是使用DWR的基础,因为该jar包包含了DWR的所有核心类和函数。 2. **创建dwr.xml** - 在WEB-INF目录下创建dwr.xml配置文件。这个文件用于配置DWR的行为...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器...通过深入学习这份DWR中文文档,开发者不仅可以掌握DWR的基本用法,还能了解到如何在实际项目中有效利用DWR提升Web应用的性能和用户体验。
这个主题主要围绕DWR的两个主要版本——DWR 2.0和DWR 3.0,以及它们与jar包的关联。 首先,DWR 2.0是DWR项目的一个早期版本,它引入了核心的远程方法调用(Remote Method Invocation, RMI)功能,使得JavaScript...
DWR开发培训.ppt、DWR.ppt:这些可能是DWR的培训演示文稿,包含了一系列主题的讲解,可能涵盖了DWR的工作原理、核心组件、使用示例和最佳实践。通过这些PPT,你可以系统地学习DWR,并通过实例加深理解。 DWR与界面...
在"Dwr demo - Dwr简单使用"这个项目中,你可以通过以下步骤了解和学习DWR的基本用法: 1. **环境准备**:首先确保你有Eclipse IDE,并且已经安装了Java Development Kit (JDK)。由于DWR是一个Java库,所以你需要一...