项目中需要实现Comet push机制,采用jetty7+dwr2.06。当页面刷新时,经常会出现异常信息,但异常并不妨碍功能的实现,照样可以push数据,不过出现异常总感到不爽,不知道是否有人遇到过,有没有可以避免的方法。 下面异常信息:
2010-5-11 22:43:38 org.directwebremoting.util.CommonsLoggingOutput warn
警告: Unhandled Exception
org.eclipse.jetty.io.RuntimeIOException: org.eclipse.jetty.io.EofException
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:223)
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:235)
at org.eclipse.jetty.io.UncheckedPrintWriter.print(UncheckedPrintWriter.java:384)
at org.eclipse.jetty.io.UncheckedPrintWriter.println(UncheckedPrintWriter.java:542)
at org.directwebremoting.dwrp.PlainScriptConduit.addScript(PlainScriptConduit.java:86)
at org.directwebremoting.extend.EnginePrivate.remoteHandleException(EnginePrivate.java:118)
at org.directwebremoting.dwrp.BaseScriptConduit.close(BaseScriptConduit.java:111)
at org.directwebremoting.dwrp.PollHandler$1.run(PollHandler.java:199)
at org.directwebremoting.dwrp.ThreadWaitSleeper.goToSleep(ThreadWaitSleeper.java:45)
at org.directwebremoting.dwrp.PollHandler.handle(PollHandler.java:211)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:457)
at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
at org.eclipse.jetty.server.Server.handle(Server.java:334)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.jetty.io.EofException
at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:885)
at org.eclipse.jetty.http.AbstractGenerator.blockForOutput(AbstractGenerator.java:486)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:145)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:86)
at java.io.ByteArrayOutputStream.writeTo(Unknown Source)
at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:258)
at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:107)
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:214)
... 34 more
Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.writev0(Native Method)
at sun.nio.ch.SocketDispatcher.writev(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write0(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at java.nio.channels.SocketChannel.write(Unknown Source)
at org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:237)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:221)
at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:818)
... 41 more
2010-05-11 22:43:38.463:WARN::Committed before 501 Error. Details logged to the console
个人觉得:每次请求,浏览器端都会创建一个与服务器的长连接,jetty必须关闭先前的长连接;当刷新时,服务器端只能保存一个该请求的长连接,即用新创建的去取代先前已经存在的长连接,服务器端会强制关闭先前的连接,此时dwr或jetty封装的时候,异常没处理好,应该是其本身的bug。不知大家有什么看法,本人也是初次使用。
分享到:
相关推荐
面向Java开发人员的Ajax技术,特别是与Jetty服务器和Direct Web Remoting (DWR)框架的结合,为创建高性能、可扩展的Comet应用程序提供了强大的工具。Comet是一种Web交互模式,它允许服务器向客户端推送数据,而不...
【描述】: 本文主要探讨如何通过Spring与Direct Web Remoting (DWR)框架的整合,利用Comet技术来构建一个无需刷新页面的多人在线聊天室。Comet是一种实现服务器到客户端实时通信的技术,它解决了传统的Ajax轮询带来...
:DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet 实现无刷新 ...
总的来说,DWR推送技术通过Comet实现了高效的服务器到客户端的数据推送,简化了实时Web应用的开发。结合提供的源码示例"j-jetty-dwr-comet-src",开发者可以深入理解DWR的工作原理,并学习如何在实际项目中应用这项...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的双向通信。它允许JavaScript在客户端与服务器端的Java对象之间进行直接调用,无需刷新页面即可交换数据,从而创建出类似桌面应用的用户体验...
如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 ...
DWR(Direct Web Remoting)是一种Java技术,用于在Web应用程序中实现JavaScript和服务器端Java对象之间的双向通信。这项技术极大地简化了AJAX应用的开发,使得动态更新页面变得更为直观和高效。在这个“dwr推技术...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许Web应用程序在浏览器和服务器之间进行实时的、双向的通信。DWR的核心功能在于提供了一种方式,使得JavaScript可以直接调用服务器端的Java方法,使得Web应用...
"j-jetty-dwr-comet-src.tar"可能是一个与Jetty(一个开源的Java Web服务器和HTTP服务器)、Direct Web Remoting (DWR)(允许在浏览器和服务器之间进行实时双向通信的框架)以及Comet(一种用于实现实时Web应用的...
DWR(Direct Web Remoting)是一个开源Java库,它实现了服务器推功能,尤其是其2.0版本开始引入的push机制。 1. **Polling(轮询)** 轮询是最基础的模拟服务器推的方式。客户端以一定的频率(如几秒一次)向...
DWR (Direct Web Remoting) 是一个简化 AJAX 应用程序开发的开源框架。从 DWR 2.0 版本开始,该框架引入了“Push”功能,允许 Web 服务器在无需客户端请求的情况下主动将数据推送给客户端浏览器。这一特性打破了传统...
dwr comet 反向ajax实力 直接抛 我打了一个包, 放到Tomcat,jetty下面就能直接跑了 很方便 还有注视 对新手 。。。。很好的
5. **开源框架**: Struts、Spring、Hibernate、Ibatis、Dwr、Jquery、Ext,这些是Java Web开发中的常用框架,分别用于MVC架构、依赖注入、持久化、AJAX、UI等。 6. **数据库技能**: 熟悉Sql2005、Sql2008,了解...