| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
create元素的javascript元素指定了DWR用来暴露tracker作为一个JavaScript对象的名字。但是,在这里,我的客户端代码不会使用它,而是从tracker推数据给它。同时,也需要在web.xml里做一些额外的配置来让DWR使用反转Ajax,见列表12。
列表12. DwrServlet的web.xml配置 网管bitscn_com
|
代码 网管论坛bbs_bitsCN_com <servlet> 网管论坛bbs_bitsCN_com |
网管网www.bitscn.com
最后,我需要实现从DWR调用的客户端JavaScript方法。回调方法updateCoordinate()被传递一个JSON形式的GpsCoord对象,它由DWR的BeanConverter自动序列化。这个方法仅仅从坐标提取longitude和latitude域并通过DOM调用添加它们到一个列表里。这在列表13里显示了,同我的页面的onload方法一起。onload包含对dwr.engine.setActiveReverseAjax(true),这告诉DWR打开一个到服务器的持久的连接来等待回调。
列表13. 反转Ajax GPS跟踪的客户端实现
网管论坛bbs_bitsCN_com
|
代码 中国网管论坛bbs.bitsCN.com window.onload = function() { function updateCoordinate(coord) { |
网管联盟bitsCN@com
据此,很容易从Yahoo!或者Google集成一个地图窗口部件。通过改变客户端回调方法,坐标可以简单的传递到地图API,而不是直接添加到页面。图3显示了在这样的一个地图组件上DWR反转Ajax GPS跟踪程序描绘的随机路线:
图3. 使用地图UI的ReverseAjaxTracker
网管u家u.bitscn@com
结论
现在您看到了Jetty Continuations联合Comet可以提供一个高效的、可伸缩的事件驱动Ajax程序的解决方案。我没有给出Continuations的伸缩性的图,因为性能在真是世界里取决于许多变数。服务器硬件、操作系统的选择、JVM实现、Jetty配置、您的Web程序的设计和传输效率在负荷下都会影响Jetty Continuations的性能。尽管如此,Webtide的Greg Wilkins(首要的Jetty开发者) 发布了一个比较Jetty 6集成Continuations与不集成Continuations的Comet程序处理10,000并发请求时的性能的白皮书。在Greg的测试里,使用Continuations并去掉了线程消费和栈内存消费,使用大于10的因数。 中国网管联盟bitsCN.com
您也看到了使用DWR的反转Ajax技术实现事件驱动的Ajax程序是多么容易。DWR不仅节省您的客户端和服务端代码,反转Ajax也将整个服务器推机制从您的代码中抽象出来。您可以随意转换您的Comet方式:轮询或者piggyback方式,只需简单的更改DWR配置。您可以随意试验并找到适合您的程序的最佳策略而不会影响您的代码。
关于作者
Philip McCarthy是伦敦的一位软件开发顾问,专于Java和Web技术。
网管论坛bbs_bitsCN_com
|
0
|
评论加载中…