`
齐晓威_518
  • 浏览: 618776 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

dwr消息推送和tomcat集群

 
阅读更多

网友的提问:

项目中用到了dwr消息推送。而服务端是通过一个http请求后 触发dwr中的推送方法。而单个tomcat中。服务器发送的http请求和用户都在一个tomcat服务器中。这样就能精准推送到每个客户端用户 中。现在配置了apache集群后,通过负载均衡,apache把服务器的这个http请求也给分配给一个tomcat容器中。这样的话,在别的tomcat容器中的用户就接受不要消息了。有什么好的办法让这个请求分配给每个tomcat容器。

 

提取到的知识点是

dwr消息推送、apache集群、负载均衡

http://tonl.iteye.com/blog/1399027

 

使用DWR反转实现信息推送(一)

 

除了利用Pushlet实现信息推送外,DWR反转同样可以实现推送。

DWR的简单配置方法已经在以前的博客中写过。所以这里直接贴代码:

新建web工程,这里命名为DwrEg,包结构如下:

web.xml代码如下:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <servlet>  
  8.       <servlet-name>dwr-invoke</servlet-name>  
  9.       <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
  10.      <init-param>  
  11.          <param-name>debug</param-name>  
  12.          <param-value>true</param-value>   
  13.      </init-param>  
  14.      <init-param>  
  15.          <param-name>activeReverseAjaxEnabled</param-name>  
  16.          <param-value>true</param-value>  
  17.      </init-param>    
  18.      <!--   
  19.      <init-param>  
  20.          <param-name>classes</param-name>  
  21.          <param-value>java.lang.Object</param-value>  
  22.         </init-param> -->  
  23.   </servlet>  
  24.   
  25.   <servlet-mapping>  
  26.      <servlet-name>dwr-invoke</servlet-name>  
  27.      <url-pattern>/dwr/*</url-pattern>  
  28.   </servlet-mapping>  
  29.   <welcome-file-list>  
  30.     <welcome-file>client.html</welcome-file>  
  31.   </welcome-file-list>  
  32. </web-app>  

 

dwr.xml代码如下:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">  
  3. <dwr>  
  4.     <allow>   
  5.         <create javascript="myrevsrse" creator="new">  
  6.             <param name="class" value="com.src.MyReverse"/>  
  7.         </create>  
  8.    </allow>  
  9. </dwr>  

 MyReverse.java代码如下:

Java代码  收藏代码
  1. package com.src;  
  2.   
  3. import java.util.Collection;  
  4.   
  5. import org.directwebremoting.ScriptBuffer;  
  6. import org.directwebremoting.ScriptSession;  
  7. import org.directwebremoting.ServerContext;  
  8. import org.directwebremoting.ServerContextFactory;  
  9. import org.directwebremoting.WebContext;  
  10. import org.directwebremoting.WebContextFactory;  
  11. import org.directwebremoting.proxy.dwr.Util;  
  12.   
  13. public class MyReverse {  
  14.     public void sendMes(String mes){  
  15.         System.out.println("kao shi si bestllll...");  
  16.         send("系统消息:"+mes);  
  17.     }  
  18.     public void send(final String output) {  
  19.         org.directwebremoting.WebContext web = WebContextFactory.get();    
  20.         String page = web.getServletContext().getContextPath()+"/client.html";   
  21.           
  22.         Collection sessions = web.getScriptSessionsByPage(page);     
  23.         System.out.println("size=="+sessions.size());  
  24.            
  25.         Util utilAll = new Util(sessions);    
  26.         
  27.         utilAll.addFunctionCall("callBack", output); //callBack是client.jsp里面的javascript函数,output是传递过去的参数  
  28.         //utilAll.setValue("news_id", output, false);     
  29.         //这种方法也可以,直接将client.html里id为news_id的textarea的值设置为output的值       
  30.     }  
  31.   
  32.     public void noticeNewOrder(int id) {  
  33.         WebContext wctx = WebContextFactory.get();  
  34.         ScriptBuffer script = new ScriptBuffer();  
  35.         script.appendScript("receiveMessages(")  
  36.                 .appendData(id)  
  37.                 .appendScript(");");  
  38.   
  39.         ServerContext sctx = ServerContextFactory.get(wctx.getServletContext());  
  40.         Collection<ScriptSession> pages = sctx.getScriptSessionsByPage("/DwrEg/client.html");  
  41.           
  42.         for (ScriptSession session : pages) {  
  43.             session.addScript(script);  
  44.         }  
  45.     }  
  46. }  

 client.html代码如下:

Html代码  收藏代码
  1. <html>  
  2. <script type="text/javascript" src="dwr/engine.js"></script>  
  3. <script type="text/javascript" src="dwr/util.js"></script>  
  4. <head>  
  5. <script type="text/javascript">  
  6.   
  7.     function callBack(data){      
  8.            alert(data);     
  9.         }    
  10.     function receiveMessages(id) {  
  11.             $('orderNotice').innerHTML = "收到id为" + id + "的新订单!";  
  12.             $('orderNotice').show();  
  13.         }  
  14.      
  15. </script>  
  16. </head>  
  17. <body onload="dwr.engine.setActiveReverseAjax(true);">  
  18. <textarea rows="20" cols="20" id="news_id"></textarea>  
  19. <br />   
  20. <div id="orderNotice"></div>   
  21. </body>  
  22. </html>  

 推送界面dopush.html的代码如下:

Html代码  收藏代码
  1. <html>  
  2. <script type="text/javascript" src="dwr/engine.js"></script>  
  3. <script type="text/javascript" src="dwr/util.js"></script>  
  4. <script type="text/javascript" src="dwr/interface/myrevsrse.js"></script>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>Insert title here</title>  
  8. <script type="text/javascript">  
  9.     function sendnews(){   
  10.         var new_content = dwr.util.getValue("newcontent");  
  11.         myrevsrse.sendMes(new_content);  
  12.     }  
  13.       
  14.     function sendinfo(){   
  15.        myrevsrse.noticeNewOrder(12);  
  16.     }    
  17. </script>  
  18. </head>  
  19. <body>  
  20. <input type="text" name="newcontent">  
  21. <input type = "button" value="发消息" onclick="sendnews()"/>   
  22. <br />  
  23. <input type = "button" value="send 2" onclick="sendinfo()"/>  
  24. <br />    
  25. </body> 
  26. 同样,这里的问题也是怎么实现点对点的信息推送,这儿只是实现了向所有的clent.html页面推送信息,以后接着总结

 

 

 

 

分享到:
评论

相关推荐

    DWR消息推送简单实例

    DWR(Direct Web Remoting...综上所述,这个"DWR消息推送简单实例"涵盖了DWR框架的基础使用、Maven工程的构建以及消息推送的实现。通过学习这个实例,开发者可以更好地理解如何在实际项目中利用DWR实现高效的双向通信。

    使用dwr+spring实现消息推送

    总的来说,结合DWR和Spring,我们可以构建出一个高效、可扩展的消息推送系统,使得Web应用能够实时地与用户互动,提升用户体验。在实际项目中,还需要考虑安全性、错误处理、性能监控等方面,确保系统的稳定性和可靠...

    dwr消息推送功能

    ### dwr消息推送功能 Direct Web Remoting (DWR) 是一种开源框架,它简化了JavaScript与服务器端Java代码之间的交互。DWR 提供了一种简单的方法来将 Java 对象暴露给 JavaScript,允许 JavaScript 调用 Java 方法,...

    dwr消息推送详细步骤

    在`dwr3实现消息精确推送详细步骤 - jsczxy2 - ITeye技术网站_files`这个文件夹中,可能包含了示例代码和教程的详细步骤。这些资源可以辅助理解每个阶段的具体操作。 10. **最佳实践** 实现消息推送时,要考虑...

    dwr消息推送完整示例

    合理设置心跳间隔和推送频率,同时考虑使用缓存减少不必要的计算和网络传输。 2. **安全性** 对于敏感数据和操作,确保使用安全的通信协议,并限制非授权访问。DWR提供了一些内置的安全机制,如白名单、签名等,应...

    dwr消息推送demo

    以后台向前台页面推送消息的一个完整实例工程,采用了spring、dwr反转,实现的是后台向前台不断推送消息,并管理相关用户退出;可以用在如定时任务的桌面消息提醒之类的场景。改变传统的前台定时刷新/请求后台的工作...

    dwr 消息推送

    总结来说,DWR消息推送是一项利用DWR库实现在Web应用中进行实时数据交换的技术,尤其适用于聊天和通知功能。虽然它在某些浏览器中可能会遇到兼容性问题,但通过合理的配置和优化,可以有效地提供双向通信体验。对于...

    基于Java和JavaScript的DWR消息推送设计源码

    本项目是一个基于Java和JavaScript的DWR消息推送设计源码,包含44个文件,其中包括12个类文件、9个Java源文件、3个XML配置文件、3个JSP页面文件、3个JAR包文件、3个JavaScript文件、2个偏好设置文件、1个类路径设置...

    struts增删改+dwr消息推送

    在"struts2增删改查+dwr消息推送"的项目中,开发者会首先集成Struts2框架,通过配置struts.xml文件来定义Action类和相应的映射路径。Action类通常包含了业务逻辑,负责处理来自用户的请求,执行增、删、改、查(CRUD...

    dwr3消息推送

    DWR3是DWR的一个版本,提供了更加强大和灵活的特性,包括异步通信、AJAX支持以及实时消息推送等。 在"消息推送"这一场景下,DWR3扮演了关键角色。它能够实现在一个页面上发送的消息,被其他页面实时接收和显示。...

    springMVC+dwr技术实现消息推送实例

    在SpringMVC + DWR的组合中,DWR的引擎会在客户端创建一个长连接,当服务器有新消息时,可以通过这个连接直接推送到客户端,更新页面内容。 **实现步骤** 1. **配置DWR:** 首先需要在Web应用的`web.xml`中配置DWR...

    dwr实现消息精确推送

    ### dwr实现消息精确推送详解 #### 一、前言 Direct Web Remoting(DWR)是一种开源技术,它使得JavaScript可以直接调用服务器端的Java方法成为可能,从而简化了客户端与服务器之间的交互过程。本篇文章将详细介绍...

    dwr3推送消息

    在DWR3中,"推送消息"功能是其特性之一,它使得服务器能够主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术通常被称为Comet或长轮询,可以用于实现实时通信,如聊天应用、股票报价、在线游戏等场景。 ...

    dwr消息推送

    DWR的消息推送主要通过两种方式实现:Polling和Reverse AJAX(Comet)。 1. **Polling**:也称为长轮询,客户端周期性地向服务器发送请求,询问是否有新数据。一旦服务器有新数据,就会立即返回,而不是让客户端...

    DWR推送技术大全 dwr推送聊天实例

    - **事件处理**:在客户端,通常会有一个事件监听器来捕获来自DWR的推送消息,并在界面上显示新消息。 - **用户认证与会话管理**:为了保证安全性,聊天应用通常需要用户认证。DWR可以集成Spring Security等框架进行...

    实现 Dwr 服务器推送

    - 考虑到性能和资源消耗,合理设置心跳间隔和推送数据的大小。 - 对于大量用户,可能需要考虑负载均衡和连接池管理。 - 由于浏览器兼容性和安全限制,Push功能可能在某些环境下无法正常工作,需要有备选方案。 通过...

    dwr消息推送示例代码

    在“dwr消息推送示例代码”中,我们将探讨如何利用DWR实现从服务器向浏览器推送消息的功能。 1. **DWR的基本概念**: - **Remoting**:远程调用,使得JavaScript能够跨域调用Java方法。 - **Direct**:直接性,...

    springMvc + dwr 注解 实现消息推送

    本项目结合了Spring MVC和Direct Web Remoting (DWR)框架,利用注解的方式实现了一种高效的消息推送机制,支持对单个用户进行精确推送以及向指定成员或群组发送消息。无需额外的配置修改,极大地简化了开发流程。 ...

    DWR消息推送

    (java语言)struts+dwr 详细推送,类似微博那种,别人给你的动态,在你的页面提醒你。推送消息。各位别嫌弃分数高,物有所值。我每一个上传的东西都是真实可靠地,大家可以查看我以往的东西。 希望能给大家带来帮助...

Global site tag (gtag.js) - Google Analytics