0 0

server push------- tomcat实现问题20

现在项目(SSH架构的web系统,web服务器用的是tomcat)中有个需求:当一个登陆后的用户(比如用户a)在某个页面中修改了数据库中的一个数据时,服务器会给符合某一条件的、当前登陆的用户所在的系统页面中弹出一个提示框。

(1)现在我的思路是 使用server push技术实现

(2)我的实现步骤是:我在用户a修改数据的前台页面定义了一个函数,修改数据时调用这个函数:

 

<script>
  function CometEx() {
    var request =  new XMLHttpRequest();
    request.open("GET", '/CoalMine/servlet/cometServlet', true);
    request.onreadystatechange = function() {
      if (request.readyState == 3 && request.status == 200) {
             alert(request.responseText);     
      }
    }
   request.send(null);
 }
 </script>

 然后在业务逻辑层创建了一个对应的servlet:

 

package servlet;
  import java.io.*;
  import javax.servlet.ServletException;
  import javax.servlet.http.*;
  import org.apache.catalina.CometEvent;
  import org.apache.catalina.CometProcessor;
  import org.apache.catalina.CometEvent.EventType;
  
  public class cometServlet extends HttpServlet implements CometProcessor {
     
         public void event(CometEvent e) throws IOException, ServletException {
                if(e.getEventType() == EventType.BEGIN) {
                       // fill in code handling here
                    HttpServletResponse response = e.getHttpServletResponse();
                    PrintWriter out = response.getWriter();
                    out.write("Hello world");
                    out.flush(); 
                    //System.out.println("message sent");
                }
                if(e.getEventType() == EventType.READ) {
                   // fill in code handling here
                }
                // and continue handing other events
         }
 }

 tomcat 的server.xml也已经配置好了

(3)实际的运行情况是:修改操作结束时只能在当前页面弹出提示框。在其他机器上登陆的用户没有反应(我知道这是因为1)其他用户登陆时没有长连接建立;2)tomcat更没有给这些长连接发送response;但是我不知道怎么保持在登陆系统时创建的长连接,也不懂如何获得这些长连接并发送消息)。

(4)我的问题是:

1 不知道还有没有别的好点的办法(定时刷新的除外)?

2 如果使用tomcat配置的话,具体点的实现思路是什么? 

3 我的思路如果不通或错误的话应该怎么改正?


问题补充:请问DWR能实现我这个需求吗?给个实现思路吧<div class="quote_title">OpenMind 写道</div><div class="quote_div">我以前用过DWR,好像比Comet好用一些,</div> <br /> <br />
2012年1月03日 12:08

2个答案 按时间排序 按投票排序

0 0

ajax 定时轮询,如果从服务端取到数据了则局部刷新一下

2012年1月04日 16:24
0 0

我以前用过DWR,好像比Comet好用一些,

2012年1月04日 09:10

相关推荐

    android-push-server-tomcat.rar_andrewsjavaweb_android tomcat_ord

    【标题】"android-push-server-tomcat.rar_andrewsjavaweb_android tomcat_ord" 提供的是一个基于JavaWeb的安卓推送服务源码,该服务运行在Tomcat服务器上。"AndrewsJavaWeb"可能是一个特定项目或者框架的名称,而...

    最新版linux apache-tomcat-8.5.59.tar.gz

    此外,还支持Server Push,使得服务器可以主动将数据推送给客户端,而无需等待客户端请求。 2. **更好的性能**:通过优化内存管理和线程调度,8.5.x版本提高了Tomcat的性能。它还能更好地处理高并发场景,确保服务...

    apache-tomcat-9.0.0.M21

    此外,它还提供了服务器推送(server push)功能,使得服务器能够主动向客户端发送数据,而无需等待客户端的请求。 2. **HTTP/2支持**: Tomcat 9.0.0.M21包含了对HTTP/2协议的实现,这是一个重要的性能提升。...

    androidpn-tomcat-server端

    这个"androidpn-tomcat-server端"是AndroidPN服务端的实现,它使用了Apache Tomcat作为应用服务器来托管Java代码。Tomcat是一个流行的开源Java Servlet容器,支持Java EE的Web应用程序。 首先,我们要理解推送服务...

    androidpn-tomcat-0.5.0

    总之,"androidpn-tomcat-0.5.0"项目是实现Android设备推送通知服务的一种解决方案,它结合了Tomcat服务器的稳定性和XMPP协议的实时性,为开发者提供了构建高效实时通信系统的基础。开发者可以通过深入理解和定制这...

    apache-tomcat-9.0.22.zip

    这个压缩包文件"apache-tomcat-9.0.22.zip"是Tomcat服务器的第9个主要版本中的第22个小版本。在IT行业中,Tomcat因其轻量级、高效能和易于管理的特性而被广泛使用,尤其适用于中小型Web应用程序。 Tomcat 9.0引入了...

    Apache-Tomcat-8.5.5(Linux )

    解决方法见:http://stackoverflow.com/questions/26893297/tomcat-8-throwing-org-apache-catalina-webresources-cache-getresource-unable-to 尊重他人成果, 转载于http://www.jmatrix.org/day/1186.html

    apache-tomcat-8.5.0

    Apache Tomcat 8.5.0 是一个广泛使用的开源软件,用以部署和运行Java Servlets...在实际操作中,通常会将`apache-tomcat-8.5.0`解压后,配置相应的环境变量,启动服务器,并通过管理工具或命令行进行应用的部署和管理。

    androidpn-tomcat版本

    Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,是一个开放源代码的Servlet容器,主要实现了Java Servlet和JavaServer Pages(JSP)规范。由于其轻量级、高效和易于管理的特性,Tomcat在中小型应用中广泛...

    androidpn消息推送-tomcat版

    **AndroidPN消息推送-Tomcat版**是一种用于Android设备的消息推送系统,它利用XMPP协议实现了客户端与服务器之间的实时通讯。本系统分为客户端和服务端两大部分,采用Java语言编写,并结合了Asmack库与Openfire...

    解决arcgis server跨域问题

    解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开&lt;ArcGIS Server&gt; \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...

    androidpn-server-app-master

    "androidpn-server-app-master" 是一个基于Android的推送通知服务(Push Notification)的项目,它采用了Tomcat作为服务器端的应用程序容器。这个项目的核心目标是为Android设备提供实时的消息推送功能,使得应用...

    androidPN server端源码eclipse tomcat版

    在这个“androidPN server端源码eclipse tomcat版”中,我们主要关注的是如何在Eclipse集成开发环境中配置和运行基于Tomcat服务器的AndroidPN服务。 首先,`androidPN`这个文件夹很可能包含了整个项目源码,包括...

    Androidpn-tomcat

    这个服务端代码主要用于实现Android设备上的实时消息推送功能,是AndroidPN(Android Push Notifications)的一部分。AndroidPN是一个开源项目,旨在帮助开发者轻松地在Android应用中集成远程通知服务。 一、...

    tomcat9.0.5

    - **解压与启动**: 将下载的`apache-tomcat-9.0.5`压缩包解压到任意目录,然后找到`bin`目录下的`startup.sh`(Unix/Linux)或`startup.bat`(Windows)脚本启动Tomcat服务。 - **管理界面**: 启动Tomcat后,可以...

    一个完整的用ajax反转 server push(服务器主动向页面推送数据)技术实现的web聊天室源码

    3. **Server Push**:服务器主动推送技术,通常包括两种主要实现方式:长轮询(Long Polling)和流(Streaming)。在这个项目中,可能采用了长轮询的方式,即服务器接收到客户端请求后并不立即返回,而是保持连接...

    Nginx+Tomcat负载均衡

    分别到两个tomcat下,直接双击D:\server\apache-tomcat-6.0.39_1\bin\startup.bat启动tomcat1 D:\server\apache-tomcat-6.0.39_2\bin\startup.bat启动tomcat2 出现以下页面表示启动成功 在浏览器中输入 ...

    android push notification 下载即可运行

    这个项目包含“androidpn-server-bin-tomcat”可能是服务端实现,而“androidpn-client”可能为客户端应用。 二、服务端实现 1. Tomcat服务器:Tomcat是一个开源的Java Servlet容器,常用于部署Web应用。"androidpn...

    nginx+tomcat+windows

    - 下载并解压缩`apache-tomcat-6.0.33-windows-x86.zip`至`D:\server\`。 - 解压后的文件夹分别命名为`apache-tomcat-6.0.29_1`和`apache-tomcat-6.0.29_2`。 - 目录结构示意图:[略] #### 三、配置步骤 ##### ...

    Tomcat 9 软件及其源码

    版本:apache-tomcat-9.0.88 以下是一些 Tomcat 9 中新增的主要功能: 1. Servlet 4.0支持:Tomcat 9 支持最新的 Servlet 4.0 规范,包括对 HTTP/2 和 HTTP/2 Server Push 的支持,以及对 HTTP 请求方法的扩展等。 2...

Global site tag (gtag.js) - Google Analytics