DW3反向AJAX介绍
发布时间:2020-12-16 00:41:13 所属栏目:百科 来源:网络整理
导读:1. ScriptSession生命周期(创建ScriptSession以及让ScriptSession失效) 当/dwr/engine.js被包含进页面时ScriptSessions就创建了。默认情况下,ScriptSessions的生命周期由org.directwebremoting.impl.DefaultScriptSessionManager维护。 如果你调用下面这个j
1.
ScriptSession生命周期(创建ScriptSession以及让ScriptSession失效)
当/dwr/engine.js被包含进页面时ScriptSessions就创建了。默认情况下,ScriptSessions的生命周期由org.directwebremoting.impl.DefaultScriptSessionManager维护。 如果你调用下面这个javascript方法:
copy
注意:在DWR2.X中,页面每刷新一次会多创建一个新的ScriptSession,使用上面的方式可以有效解决这个问题。 由于ScriptSession的创建机制不同于HttpSession,它会在每次页面刷新的时候都会重新创建,而销毁机制却是失去连接或者失效之后一定时间才会自动销毁,这样就可能造成服务端可能就保存了很多的无用的ScriptSession,所以不仅仅会影响性能问题,更重要的是,可能就不能实现你想要的功能。 解决方法是在接收消息的页面,也就是你调用dwr.engine.setActiveReverseAjax(true);的页面调用一个dwr的方法。 dwr.engine.setNotifyServerOnPageUnload(true); 这个方法的功能就是在销毁或刷新页面时销毁当前ScriptSession,这样就保证了服务端获取的ScriptSession集合中没有无效的ScriptSession对象。 2 .非DWR线程(关于请求信息传递到非DWR线程) 非DWR线程都没有提到DWR线程创建他们。正因为如此: WebContextFactory().get().getScriptSession()在非DWR线程中将返回null。你需要通过DWR线程向非DWR线程传递数据。 3. ScriptSessionManager(从一个非DWR线程获取ScriptSessionManager) 可以使用下面的代码:
[java]
copy
大多数反向AJAX实现需要一个单独的线程将数据推给客户端。为每一个DWR请求创建一个线程没有可扩展性。我们建议你使用线程池结合application范围内的DWR创建器。 5 .Browser API(如何针对特定的ScriptSessions) DWR的Browser API包含几个比较有用的方法用来更新浏览器。一些Browser方法需要ScriptSessionFilter,并根据ScriptSession的attribute来过滤并针对指定的ScriptSessions。如何使用ScriptSessionFilter与Browser API来区分用户: 5.1 implement ScriptSessionFilter copy
copy
5.3在你的反向AJAX线程中使用ScriptSessionFilter
copy
copy
6.ScriptSession(在ScriptSession中设置区分属性)
copy
copy
7. ScriptSessionListeners(当ScriptSession创建或销毁时,如何使用ScriptSessionListeners做处理) 你需要如下代码: copy
7.1 在DWR servlet初始化后,扩展DWR Servlet并执行上述代码 7.2 在一个Servlet中执行上述代码,并把这个Servlet的 <load-on-startup/>值设置得要比DWR servlet的<load-on-startup/>值高。
(转)http://www.52php.cn/article/p-hjbmmpyp-pp.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- NOSQL们背后的共有原则
- TiDB 在株式会社 FUNYOURS JAPAN 的应用
- 如何更改React-Native中标记的ListView项
- react native Warning: setState(...): Can only update a
- C# – 将指向sockaddr结构的IntPtr转换为IPAddress
- 详解vue 实例方法和数据
- swift – 无法将UICollectionViewCell集中在UITableViewCel
- react-native-swipeout onPress方法禁用包含组件的onPress方
- WebWork配置文件详解
- 在OC和Swift中使用IBDesignable/IBInspectable