2012-07-19 74 views
1

我正在使用jetty嵌入泽西岛。我的独立码头运行良好,但一段时间后它开始闲置。我在2毫秒内给出回应。然而它开始给出响应8000毫秒。和闲人。我对它进行了描述,但找不到任何东西。我得到这个错误:嵌入式Jetty IllegalStateException:已提交

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在这里说,执行者是不是好码头的线程池,但我不能当然。

我使用:7.4.5.v20110725 jetty-servlet和jetty-security。

PS 2:我发现:http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.jetty/jetty-server/8.0.0.M0/org/eclipse/jetty/server/Response.java#1103

任何想法?

+0

有关问题的任何想法? – kamaci 2012-08-04 10:31:37

+0

在这里看到我的答案:http://stackoverflow.com/a/33439827/179850 – Gray 2015-10-30 15:50:20

回答

0

我知道这可能为时已晚,但我刚刚碰到了这个,使用嵌入在JPOS下的Jetty 8.x。
写了一个测试处理器和快速的HandlerCollection下进行配置的:
HandlerCollection
...的ContextHandler
... RequestLogHandler
...... FunkyHandler

换句话说,它是最后一个是执行。哪个barfed了这个:
java.lang。 IllegalStateException:STREAM org.eclipse.jetty.server.Response.getWriter(Response.java:699) at com.acs.test.jetty.FunkyHandler.handle(FunkyHandler.java:26) at org.eclipse。在org.eclipse.jetty.server.Server的org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 上的jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) 。句柄(Server.java:365)

试用了OutputStream,它给了我提交状态错误,和OP一样。
所以,在阅读这里的某个地方,这些处理器在他们配置顺序调用后,修复很容易{这可能也是工作,当您设置在代码中的处理程序}:
HandlerCollection
...... FunkyHandler
...的ContextHandler
... RequestLogHandler

由于我没有耐心阅读文档码头,我敢肯定,这是什么地方提到,但在这里它是。希望它有助于某人。