2012-07-19 112 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

由於我沒有耐心閱讀文檔碼頭,我敢肯定,這是什麼地方提到,但在這裏它是。希望它有助於某人。