iteye_14674 2011-08-11 11:03
浏览 134
已采纳

请教个dwr的问题

怎么从ScriptSession取得当前用户,实现向特定的用户发送脚本? 下面是我的代码,要怎么改造?
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) facesContext.getExternalContext().getContext();
ServerContext sctx = ServerContextFactory.get(servletContext);
Collection sessions = sctx.getAllScriptSessions();
Util pages = new Util(sessions);
pages.addFunctionCall("initD", subject, "im.xhtml?users=" + java.net.URLEncoder.encode(users));

  • 写回答

7条回答

  • laopeng301 2011-08-11 11:57
    关注

    其实可以这样,跟去session去推送
    因为session是唯一的··
    那么你得自己管理session 与scriptsession的映射和维护正确的scriptsession
    自己维护一个Map,在这个Map里面,定义key就是HttpSession的Id,其值就是ScriptSession对象。
    在每一次页面载入的时候,都去注册此ScriptSession,那么就会把新的ScriptSession绑定到httpSession上面了。

    Map sm
    // hs is HttpSession
    // ss is ScriptSession object
    sm.put(hs.getId(), ss);
    然后
    通过上面的Map取得所有的有效ScriptSession集合
    取出对应你要推送消息的user的sessionid的对应ScriptSession

    然后再推送,就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决