我正在使用嵌入式球衣的码头。我的独立码头运行良好,但一段时间后它开始闲置。我在2毫秒内给出了答复。然而,它开始给予反应8000毫秒。和空闲。我描述了它但找不到任何东西。我收到了这个错误:
java.lang.IllegalStateException: Committed
at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1056)
at org.eclipse.jetty.server.Response.sendError(Response.java:273)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:509)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:346)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1048)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:601)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:241)
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:664)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
我厌倦了改变线程池设置并做到了:
server.setThreadPool(new ExecutorThreadPool(64,256,10));
PS 1: https://groups.google.com/forum/#!msg/cometd-users/5yhMwIlRVbg/fL7V3mwWKyoJ这里说执行者不如jetty的线程池好,但我不确定。
我使用: 7.4.5.v20110725 的jetty-servlet和jetty-security。
有什么想法吗?
答案 0 :(得分:0)
我知道这可能为时已晚,但我刚刚使用JPOS中嵌入的Jetty 8.x自行解决了这个问题。
写了一个测试处理程序并在HandlerCollection下快速配置它:
HandlerCollection
...的ContextHandler
... RequestLogHandler
...的 FunkyHandler 强>
换句话说,它是最后被执行的。这对此进行了抨击:
java.lang。 IllegalStateException :org.eclipse.jetty.server.Response.getWriter中的STREAM(Response.java:699)
在com.acs.test.jetty.FunkyHandler.handle(FunkyHandler.java:26)
在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
在org.eclipse.jetty.server.Server.handle(Server.java:365)
使用OutputStream尝试它,它给了我提交状态错误,与OP相同。
因此,在这里读取这些处理程序按照它们配置的顺序调用后,修复很简单{这可能也适用于您在代码中设置处理程序时}:
HandlerCollection
...的 FunkyHandler 强>
...的ContextHandler
... RequestLogHandler
由于我没有费心阅读Jetty文档,我很确定这是在某处提到的,但现在就是这样。希望它对某人有所帮助。