`
wangchao_17915566
  • 浏览: 169879 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

寻觅dwr调用方法缓慢的问题

阅读更多

       前几天我遇到了一个问题,让我百思不得其解。我们项目需要用dwr开发,以前也用过,可是这次需要和Spring整合,很快一个下拉列表联动就做好了,可是进入Tomcat中运行相当慢,我在网上差了很多资料,但是都是一场空,下来看看我这个项目第一次写的代码。

public class Deptement {
	private static SystemQuery systemQuery = null;
	private static TrainQuery trainQuery = null;
	
	
    Company company = new Company();
    Department department = new Department();
	public static void find(){		
	
	}
	
//	调用公司方法
	public Map ClassList() { 
//		得到spring上下文
		ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext-hibernate.xml" });
//       得到bean
		trainQuery = (TrainQuery)appContext.getBean("trainQueryTarget");
		List companylist=new ArrayList();
		Map reply = new HashMap(); 
//		调用bean方法
		companylist=trainQuery.queryCompany();	
		System.out.println("+++++++++++"+companylist.size());
		if(companylist.size()>0){
			for(int i=0;i<companylist.size();i++){			
				company =(Company) companylist.get(i);
				System.out.println("______"+company.getId().getCompanyId()+"______"+company.getId().getCompanyName());
//				循环将公司id与公司名称放入map
				reply.put(company.getId().getCompanyId(),company.getId().getCompanyName());
			}
		}
		System.out.println(reply.size());
//		返回map
        return reply; 
    } 
	
//	调用部门方法
	public Map UserList(String CLASSID){
//		得到spring上下文
		ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext-hibernate.xml" });
//		得到bean
		systemQuery = (SystemQuery)appContext.getBean("systemQueryTarget");
		List deptementlist=new ArrayList();		
		Map reply = new HashMap(); 
//		调用bean方法
		deptementlist = systemQuery.searchDepartmentList(Integer.parseInt(CLASSID));
		System.out.println("+++++++++++"+deptementlist.size());
		if(deptementlist.size()>0){
			for(int i=0;i<deptementlist.size();i++){			
				department =(Department) deptementlist.get(i);
				System.out.println("______"+department.getId().getCompanyId()+"______"+department.getId().getDepartmentName());
//				循环将部门id和名称放入map
				reply.put(department.getId().getDepartmentId(),department.getId().getDepartmentName());
			}
		}
		System.out.println(reply.size());
//		返回map
		return reply;
	}
}

 

 

这是后台方法,现在看看dwr文件

<dwr> 
  <allow>  
     <create creator="new" javascript="Deptement"> 
      <param name="class" value="com.seavision.qjculture.common.Deptement"/> 
    </create>  
     <create creator="new" javascript="People"> 
      <param name="class" value="com.seavision.qjculture.common.People"/> 
    </create>     
  </allow> 
</dwr> 

 

web.xml就不用看了,大家应该比我更熟悉。 

前台页面我也不写了,这次重点不是在展现,是解决为什么调用慢。

 

    当这个功能完成后,我兴高采烈的将它部署到Tomcat下面,心想终于完了,开始运行,当我进入这个联动页面时,发现很久都没有响应,真不知道是怎么了,看看后台没有抛异常, 正郁闷的时候,突然页面出现了下拉列表的内容,大家可以想象得到这有多么长的时间才响应。这再交给客户,客户非跳起来不可,还什么ajax框架,比jsp响应还慢。

直到下班我都没有解决,效率真低,第二天我又重新寻找问题,其实高手们一看就可以知道我写的方法有问题,大家可以看到,这虽然是与spring连用,但是并没有与spring的bean配合,这是一个问题,最大的问题是每次调用bean方法是都得到一次spring的上下文,这显然给服务器无形的压力。终于找到问题了。于是我把方法写到service层,重新配置dwr文件

<dwr> 
  <allow>  
         <create creator="spring" javascript="Deptement"> 
        <param name="beanName" value="trainQueryTarget"/>         
     </create>   
     <create creator="spring" javascript="Company"> 
        <param name="beanName" value="systemQueryTarget"/>         
     </create>   
     <create creator="new" javascript="People"> 
      <param name="class" value="com.seavision.qjculture.common.People"/> 
    </create> 
  </allow> 
</dwr> 

 

再次运行,问题解决了。不知道你们遇见过这个问题吗?我要申请专利啦。呵呵!

分享到:
评论
2 楼 wangchao_17915566 2008-09-19  
放到src下最好
1 楼 xingxing 2008-09-06  
applicationContext-hibernate.xml
请问一下你的这个文件在哪位置放的.

相关推荐

    dwr 各种调用方法

    dwr (Direct Web Remoting) 是一种开源技术,它允许在Web应用程序中实现在客户端JavaScript与服务器端Java之间进行安全的远程方法调用。DWR简化了前后端交互,使得前端可以直接调用后端的Java方法,就像调用本地函数...

    Ext tree 结合dwr 调用后台数据

    将`Ext tree`与`DWR`结合,意味着前端的树形视图可以通过DWR直接调用后台的Java方法来获取或更新数据。例如,当用户展开树的一个节点时,前端可以发送一个DWR调用,请求后台填充该节点的子节点数据。后台处理请求后...

    dwr调用带集合返回值的方法

    DWR简化了这个过程,使得开发者可以轻松地调用服务器端的方法,并将结果直接在浏览器中更新,而无需刷新整个页面。 在DWR中,当需要处理带有集合返回值的方法时,有一些关键点需要注意: 1. **配置DWR**: 首先,你...

    springboot整合dwr实现js调用java方法

    SpringBoot整合Direct Web Remoting (DWR)是一个常见的技术实践,它允许JavaScript在浏览器端直接调用服务器端的Java方法,极大地增强了Web应用的交互性。在这个过程中,我们通常会结合使用FreeMarker或JSP作为视...

    dwr实例,JavaScript调用java方法的小例子

    DWR简化了AJAX(Asynchronous JavaScript and XML)应用的开发,使得开发者可以方便地在JavaScript中直接调用Java方法,仿佛它们是本地函数一样。 在"TestDwr"这个压缩包中,我们可以预期包含了一个简单的DWR实例,...

    DWR调用及传参总结

    DWR (Direct Web Remoting) 是一种用于在Web应用程序中实现AJAX技术的框架,它允许JavaScript直接调用服务器端的Java方法,从而实现实时的动态数据交换。以下是对DWR调用及传参方式的详细说明: 1. **无返回值和...

    DWR中各种java方法的调用

    ### DWR中各种Java方法的调用:深入解析与实践 DWR,全称为Direct Web Remoting,是一个创新的框架,旨在简化JavaScript调用Java方法的过程。它利用Ajax技术,实现了网页上的动态交互,无需页面刷新即可更新内容,...

    dwr测试,java调用js

    DWR的主要目标是简化AJAX(Asynchronous JavaScript and XML)开发,使得开发者能够轻松地在浏览器中调用服务器上的Java方法,就像调用本地JavaScript函数一样。这个技术极大地提升了用户体验,因为数据可以在不刷新...

    高级dwr方法调用少用的

    在本文中,我们将深入探讨DWR的一些高级方法调用。 1. **调用没有返回值和参数的JAVA方法** 在DWR中,调用一个没有返回值和参数的Java方法非常简单。首先,你需要在`dwr.xml`配置文件中声明你想要暴露的方法,如`...

    dwr dwr项目 js 调用 java 后台 方法 js调用java后台方法 后台方法 异步

    DWR使得开发者能够轻松地在Web应用中调用后台Java方法,就像调用本地JavaScript函数一样。下面将详细阐述DWR的工作原理、配置过程以及如何使用DWR实现JS调用Java后台方法。 1. **DWR概述** DWR的核心功能是提供一...

    DWR反向调用

    4. **编写JavaScript代码**:在客户端,使用DWR提供的API调用服务器端的方法。 5. **部署与测试**:将应用部署到服务器,通过浏览器进行测试。 **四、DWR与其他技术的比较** 1. **Ajax**:Ajax通常需要手动触发...

    DWR的基本原理以及前后台互相调用并整合SPRING的简易DEMO

    1. **DWR Engine**:这是DWR的核心组件,负责处理客户端的AJAX请求和服务器端的Java方法调用。DWR Engine通过Servlet容器(如Tomcat)运行,并监听特定的HTTP端点。 2. **Reverse AJAX**:DWR利用长轮询或IFrame等...

    怎么将利用DWR调用JAVA类方法所返回的ArrayList数组   赋值给   logiciterate 迭代器

    ### 如何将通过DWR调用Java类方法返回的ArrayList赋值给逻辑迭代器 在Web开发中,经常需要从前端向后端发起请求并获取数据。Dynamic Web Remoting(DWR)是一种简化Ajax开发的技术,它使得JavaScript可以像调用本地...

    DWR框架对各种类型方法调用的示例

    在"DWR框架对各种类型方法调用的示例"中,我们可以看到DWR是如何处理不同类型的参数和返回值的。以下是对这些示例的详细解析: 1. **无参方法调用**: 当你需要调用一个不接受任何参数的后台方法时,DWR提供了简便...

    DWR调用含有参数的JAVA类.doc

    DWR(Direct Web Remoting)是一种简化Ajax开发的框架,它允许JavaScript代码直接调用服务器端的Java方法,从而实现更简单、高效的数据交互。本文将详细介绍如何使用DWR来调用含有不同类型参数的Java类的方法。 ###...

    dwr 前台调用后台的java类 hello

    DWR简化了AJAX开发,使得前端JavaScript可以方便地调用后端的Java方法,仿佛它们都在同一个环境中运行。在本文中,我们将深入探讨如何使用DWR创建一个简单的"Hello, World!"应用,以理解其基本工作原理。 ### 一、...

    dwr的远程批量调用

    当需要同时调用多个服务端方法时,可以利用DWR提供的批量调用功能来减少网络延迟和提高效率。 **批量调用的基本流程:** 1. **开始批量调用:** 使用`DWREngine.beginBatch()`函数启动一个批量操作。 2. **添加...

    dwr实例操作+rmi实例操作

    - **配置DWR**:在web应用的WEB-INF目录下创建dwr.xml文件,声明可调用的Java类和方法。 - **创建Java类和方法**:编写需要被远程调用的Java类和方法。 - **引入JavaScript库**:在HTML或JavaScript文件中引用DWR...

    调用带JavaBean参数方法的DWR例子

    在“调用带JavaBean参数方法的DWR例子”中,我们将深入探讨如何使用DWR来调用包含JavaBean作为参数的方法。 首先,我们需要理解DWR的基本工作原理。DWR通过创建一个JavaScript接口,该接口映射到服务器上的Java类和...

Global site tag (gtag.js) - Google Analytics