cometprocessor-tomcate cometProcessor 报错

问题描述

tomcate cometProcessor 报错

我想做一个服务器每一秒主动向浏览器推送一个时间的demo.程序如下:

servlet

 public class CometTest extends HttpServlet implements CometProcessor {
    private static final long serialVersionUID = 1L;

    public CometTest() {
        super();
    }

    @Override
    public void event(CometEvent ce) throws IOException, ServletException{
        HttpServletRequest request = ce.getHttpServletRequest();
        HttpServletResponse response = ce.getHttpServletResponse();
        response.setHeader("Content-type", "text/html; charset=utf8");
        if(ce.getEventType() == EventType.BEGIN){
            HttpSession session = request.getSession();
            System.out.println(session.getId()+"已初始化");
        }else if(ce.getEventType() == EventType.READ){
            Sender s = new Sender(response);
            s.start();
        }else if(ce.getEventType() == EventType.ERROR){
            System.out.println(ce.getEventSubType());
        }
    }

}

Sender(用于推送消息的线程类)

 public class Sender extends Thread{

    private HttpServletResponse response;
    private PrintWriter pw;
    public Sender(HttpServletResponse response) throws IOException{
        this.response = response;
        pw = this.response.getWriter();
    }
    @Override
    public void run() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        while(true){
            pw.write(sdf.format(new Date()));
            pw.flush();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}

jsp页面

 <%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script>
    function go() {
        $.ajax({
            url : "http://localhost:8080/cometTest/comet",
            type : "post",
            dataType : "text",
            data : {
                "name" : "zdc"
            },
            complete : function(xh, data) {
                $("#text1").html(xh.responseText);
            },
        });
    }
</script>
</head>
<body>
    <input type="button" id="b1" onclick="go()" value="click" />
    <label id="text1"></label><br/>
</body>
</html>

目的是进行循环的推时间到客户端,而结果是客户只收到一次推送后,服务器端报错(如下):

7719C3E7EC73EC3DEE51DA998BBFEC0F已初始化
IOEXCEPTION
九月 15, 2015 10:06:06 下午 org.apache.catalina.connector.CoyoteAdapter checkRecycled
信息: Encountered a non-recycled response and recycled it forcedly.
org.apache.catalina.connector.CoyoteAdapter$RecycleRequiredException
at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:592)
at org.apache.coyote.http11.AbstractHttp11Processor.recycle(AbstractHttp11Processor.java:1814)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.release(Http11NioProtocol.java:218)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:703)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1753)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1712)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

解决方案

http://bdk82924.iteye.com/blog/1832746

解决方案二:

编程是一种美德,是促使一个人不断向上发展的一种原动力。

时间: 2024-12-12 06:37:47

cometprocessor-tomcate cometProcessor 报错的相关文章

idea+maven导入web项目后,tomcat无报错,无日志输出,启动失败,求大神!

问题描述 idea+maven导入web项目后,tomcat无报错,无日志输出,启动失败,求大神! 模块之间的依赖关系可以从这个pom中看出来 把这三个子模块的编译结果都输出到platform的webappWEB-INFclasses,所依赖的jar包通过Maven也输出到webappWEB-INFlib, 然后tomcate 这样配置的 然后启动tomcate 无报错 无log 直接停止,真的太诡异了! 大神们,帮帮忙!太感谢了!!! 解决方案 用IDEA启动非maven管理的web项目 解决

websphere下报错:No action instance for path /login could be created、tomcate一切正常,高手进

问题描述 websphere下报错的详细信息:[09-9-2415:36:30:265CST]00000028SystemOutO[org.apache.struts.action.RequestProcessor]-[ERROR]-15:36:30Noactioninstanceforpath/logincouldbecreatedjava.lang.NullPointerExceptionatorg.eclipse.osgi.framework.internal.core.BundleLoa

jsp页面访问带有空格的路径的文件时,会报错?

问题描述 jsp页面访问带有空格的路径的文件时,会报错? 解决方案 单例模式?可能会出错,但是你首先考虑路径是否正确. 解决方案二: 这是命名要求的把!一般命名不能有空格 解决方案三: 你的propertise文件没有找到,你执行IO操作的时候,路径错了 解决方案四: 我把tomcate的路径换到没有空格的文件夹下面,重新配环境变量就好了,,谨记 解决方案五: 我把tomcate的路径换到没有空格的文件夹下面,重新配环境变量就好了,,谨记

求大神帮忙!!javaweb项目报错:找不到或无法加载主类 enable

问题描述 我用MyEclipse编写javaweb项目时,写了一个java类想测试一下写的dao方法,用runas-javaApplication运行,每次都报"找不到或无法加载主类enable"的错误,我的测试类中写了main函数.但是在jsp页面中是可以通过tomcate运行起来的,我觉得应该和tomcate没什么关系吧.其他的java项目都是可以正常运行的,但是所有的javaee项目好像都不能正常运行java类.刚开始学习javaweb,今天搞了一下午,还是不会... 解决方案

path-tomcat问题 启动不了 web项目报错

问题描述 tomcat问题 启动不了 web项目报错 Demo13 is required and cannot be removed from the server 每个web项目都在run as 的时候,点击该项目命称,最上面就会出现这句话,前面有个红叉,最后运行时报错,但我的build path等配置并没问题,tomcat安装都没问题 解决方案 你是不是有两个tomcat,遇到这种问题最直接的方法是 点击删除tomcat,然后再把tomcat加进去 就好了 解决方案二: tomcat启动报

$.ajax传JSON数据到后台出现报错问题解决

 $.ajax传JSON数据到后台时总会出现一些错误,本文整理了一些注意事项,感兴趣的朋友可以参考下 代码如下: $.ajax({  url: "../Services.ashx",  type: "POST",  //data: { 'data': { 'typename': JSON.stringify(typename) }, 'operationType': '2' },  data: { 'data': typename, 'operationType':

jdk安装好后,控制台报错如下。

问题描述 jdk安装好后,控制台报错如下. -->java -version -->Error:opening registry key'SofrwareJavaSoftJava Runtime Environment' -->Error:could not find java.dll -->Error:could not find Java SE Runtime Environment 解决方案 环境变量配置好了吗?要不就是你装的JDK有问题. 解决方案二: 是不是没有访问注册表

web service-axis2处理webServices在was环境下报错,tomcat下正常

问题描述 axis2处理webServices在was环境下报错,tomcat下正常 关键代码如下 /** * 申诉请求 */ public static String appealRequest(String requestXML, ImageFileData[] file) { String result = ""; try { // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient(

Genymoation安装之后打开虚拟机报错求大神指点

问题描述 Genymoation安装之后打开虚拟机报错求大神指点 错误是这样的 求大神指点,谢谢 解决方案 多启动几次,如果还不行,就启动virtualbox,在里面看看对应的虚拟机是否正常可以启动,或者先关掉它