随笔 - 115  文章 - 481  trackbacks - 0
<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(19)

随笔档案(115)

文章档案(4)

新闻档案(1)

成员连接

搜索

  •  

最新评论

阅读排行榜

评论排行榜

    EasyJWeb中已经有了一个Ajax远程脚本调用引擎,这是很早的事情了。但由于一直存在一些性能问题,所以一直没有给大家推荐,直到最近m3发布,通过对Ajax远程脚本调用引擎进行完善,把处理复杂对象的返回进行的简化,通过在以前的几个应用中进行了测试,发现性能一下子提升了至少10倍以上,并且运行比较稳定,因此在这里给大家推荐推荐。

  Ajax远程脚本调用示例演示:http://easyjweb.demo.easyjf.com/ajax/ajax.html

  完整的示例应用及源码下载:ftp://ftp1.easyjf.com/easyjweb/demo/ajax.war
  

  EasyJWeb是一个提供了对Ajax远程脚本调用功能支持的框架,他帮助你完成Ajax远程脚本调用中的大多数细节工作,你基本上不用写额外的代码就能非常轻松的使用javascript来调用服务器的业务组件的相关方法,这些业务组件可以是任何java对象,比如EJB、EasyJWeb容器中的Bean、Spring容器中的Bean等等。使用EasyJWeb的Ajax远程脚本调用,需要下面的几个步骤:
  1、 在EasyJWeb容器或子容器中配置供客户端脚本调用的业务组件。比如,在easyjweb的配置文件中像下面的方式配置Bean:

<bean name="PersonService" class="easyjweb.demo.service.impl.PersonServiceImpl" />

     PersonServiceImpl的代码如下:

package easyjweb.demo.service.impl;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class PersonServiceImpl {
/**
* 得到服务器当前时间
* @return
*/
public Date getTime() {
return new Date();
}
}

2、 在EasyJWeb的配置文件,配置要把容器中的哪些业务组件及具体方法暴露给客户端进行远程脚本调用。内容大致如下:

<ajax>
<services allowName="*">
<service name="PersonService" />
</services>
</ajax>

上面的ajax配置信息表示暴PersonService的所有public方法供客户端使用javascript调用。
只需要上面的两步,就完成了服务器端的相关工作。服务器端不再需要写任何Action,EasyJWeb会自动处理客户端发送来的Ajax远程脚本调用,下面我们进一步看看客户端的程序。
3、为了能够在客户端页面中直接使用javascript进行对PersonService业务组件的Ajax远程脚本调用,我们需要在页面中引入下面三个js。

<script src="ejf/easyajax/prototype.js" type="text/javascript"></script>
<script src="ejf/easyajax/engine.js" type="text/javascript"></script>
<script src="ejf/easyajax/PersonService.js" type="text/javascript"></script>

  其中第一个ejf/easyajax/prototype.js引入的是prototype.js,这是一个javascript的基础库,提供很多对基础javascript类的扩展,并提供了ajax相关的实用组件,EasyJWeb的远程脚本调用引擎是基于prototype.js构建的。
  第二个ejf/easyajax/engine.js是EasyJWeb的远程脚本调用支持引擎,他负责处理Ajax远程脚本调用的相关的细节,如参数处理、回调处理等,同时提供了一些实用工具如EasyAjaxUtil等供客户端使用。
  第三个ejf/easyajax/PersonService.js是PersonService对象,PersonService.js的内容是根据服务器端的容器中名为PersonService的Bean及EasyJWeb的ajax配置信息生成的。只要引入了PersonService.js,我们就可以直接在页面中调用PersonService的相关方法了。
  上面的三个js文件都是服务器端动态生成的,需要我们在web.xml文件把所有/ejf/*的URL都交由EasyJWeb来处理。因此,需要在Web.xml的url中增加如下的映射内容:

<servlet-mapping>
<servlet-name>easyjf</servlet-name>
<url-pattern>/ejf/*</url-pattern><!--所有/ejf/开头的url都由easyjweb来处理-->
</servlet-mapping>


4、 在页面中使用javascript调用服务器的相关方法

<script>
function showServerTime(){
PersonService.getTime(showTime) ;
function showTime(ret){
alert("服务器端时间: "+ret) ;
}
}
</script>

  怎么样,一切都是如此简单,不需要写任何PersonService的代码,不需要写任何Action,只需要进行非常简单的配置,就能让我们服务器上的业务组件支持Ajax远程脚本调用。

  by easyjf 大峡

posted on 2008-01-03 13:22 简易java框架 阅读(1861) 评论(11)  编辑  收藏

FeedBack:
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 13:55 隔叶黄莺
何以就断定性能提升10倍了呢?  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 13:59 xuruchao
和DWR没有什么区别吧?  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 14:01 金鱼
我只能根据网速和服务器的性能判断它是否快.  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 14:07 简易java框架
@隔叶黄莺
这个据说是根据测试得来的,放在以前很多基于EasyJWeb的Ajax应用上试了,确实提高了,这里的10倍应该是一个概数。  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 14:12 忠厚中国
在和以前遗留系统上比较的话可能要快很多,这样只证明一点,以前作的太垃圾了!  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 14:15 简易java框架
@忠厚中国
你把现在这个跟dwr比较一下就知道了。:-)
另外跟以前的比,只是一些算法改进了一下,其它的都没变。这个快也不是绝对,只是针对某些部份。就好比,Guice说他比Spring快100倍,你能说Spring就垃圾吗?  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎[未登录] 2008-01-03 14:15 天一
@xuruchao
  从应用的角度来说,区别不大,都非常简单、直观。但从实现的角度来说,区别还是比较大的。
  首先就是dwr的中心的dwr,再向外幅到其它的spring支持、webwork支持、guice支持等,很啰嗦的。而EasyJWeb的重心是web应用,毕竟一个大型的Web应用不可能全部是远程脚本调用,更多的情况只是为了实现一些功能才需要的。easyjweb中的这个远程脚本调用只是一个非常普通的EasyJWeb Action,由于这部分只专注于远程脚本功能实现,所以代码非常少。
  另外很多dwr不方便实现的的,比如服务器端的方法的参数为(除集合以外)接口类型。当然EasyJWeb也有一些没有实现,比如,往服务器端发送集合或数组的时候,只能发送简单类型的值。  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-03 14:18 忠厚中国
谢谢简易java框架为我带来这么好的东西,我正在为此事着急呢,请简易java框架的兄弟们一定指点一二,我在项目中好少费些力气去学习DWR。  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎[未登录] 2008-01-03 18:22 stone
如果和自己比,性能提升了10倍,那说明以前的性能太差了  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2008-01-05 14:54 小石
发送长整数组和List都返回null错误。  回复  更多评论
  
# re: 性能提升10倍的Ajax远程脚本调用引擎 2009-10-09 05:00 wangqi

只有注册用户登录后才能发表评论。


网站导航: