From: Greg W. <gr...@mo...> - 2005-08-24 10:40:24
|
Stuart, I found the problem - in the stop of the listeners. I'll have to investigate when this bug was added, as stop/start was certainly working in recent releases. fixed in CVS now and 5.1.5rc1 coming soon. regards Stuart Popejoy wrote: > Hi, > > Is the HttpServer class intended to be stopped and then started again? > > I'm researching embedding Jetty in a desktop app and only want the http > server to be operational when the user is logged into my application. > Thus, I was thinking the http server would start() at login and stop() > at logout, and thus re-start() at login, etc etc ... > > However, when I do this in a junit, ThreadedServer starts spitting out > IGNORED, with a "Socket is closed" SocketException. > > Is this not the right way to do this? I could also make the various > handle() methods send 404s or something when the session is not active, > if that's better. I liked the idea of stopping the server when not in > use, but if that's not the way the server was meant to be used then so > be it ... > > Thanks! Log output follows. I'm wondering about the "problem stopping > acceptor" too .... > > Stuart > > > > [DEBUG 13:48:36,588] Container add component: > SocketListener0@0.0.0.0:8945 > [DEBUG 13:48:36,589] Container addEventListener: > testPD(com.pinksheets.dealer.pinkdesk.test.PinkDesktopServiceTest) > [DEBUG 13:48:36,614] Container add component: > org.mortbay.http.ResourceCache@18a992f > [DEBUG 13:48:36,615] Container add component: > HttpContext[/test,/test] > [DEBUG 13:48:36,618] HttpServer Added HttpContext[/test,/test] > for host * > [DEBUG 13:48:36,618] Container add component: > com.pinksheets.dealer.pinkdesk.PinkDesktopService$PDHandler in > HttpContext[/test,/test] > [DEBUG 13:48:36,619] PinkDesktopService added PinkDeskHandler at path > 'test': testPD(com.pinksheets.dealer.pinkdesk.test.PinkDesktopServiceTest) > [INFO 13:48:36,619] SessionState changeState: S_NOT_CONNECTED to > S_ATTEMPTING_LOGIN > [INFO 13:48:36,619] SessionState changeState: S_ATTEMPTING_LOGIN > to S_LIVE > [DEBUG 13:48:36,619] Container Starting > org.mortbay.http.HttpServer@9664a1 > [INFO 13:48:36,621] HttpServer Version Jetty/5.1.x > [DEBUG 13:48:36,622] HttpServer LISTENERS: > [SocketListener0@0.0.0.0:8945] > [DEBUG 13:48:36,622] HttpServer HANDLER: > {null={/test/*=[HttpContext[/test,/test]]}} > [DEBUG 13:48:36,623] Container Starting HttpContext[/test,/test] > [DEBUG 13:48:36,623] HttpContext Init classloader from null, > sun.misc.Launcher$AppClassLoader@133056f for HttpContext[/test,/test] > [DEBUG 13:48:36,623] AbstractHttpHandler Started test in > HttpContext[/test,/test] > [INFO 13:48:36,623] Container Started HttpContext[/test,/test] > [INFO 13:48:36,626] SocketListener Started SocketListener on > 0.0.0.0:8945 > [INFO 13:48:36,627] Container Started > org.mortbay.http.HttpServer@9664a1 > [DEBUG 13:48:36,627] PinkDesktopServiceTest doGet: > http://localhost:8945/test > [DEBUG 13:48:36,642] HttpConnection new HttpConnection: > Socket[addr=/127.0.0.1,port=56726,localport=8945] > [DEBUG 13:48:36,694] HttpConnection readRequest() ... > [DEBUG 13:48:36,707] HttpConnection REQUEST from > SocketListener0@0.0.0.0:8945: > GET /test HTTP/1.1 > User-Agent: Java/1.5.0_03 > Host: localhost:8945 > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 > Connection: keep-alive > Content-Type: application/x-www-form-urlencoded > > > [DEBUG 13:48:36,711] HttpServer Contexts at /test: > [/test/*=[HttpContext[/test,/test]]] > [DEBUG 13:48:36,711] HttpServer Try HttpContext[/test,/test],0 > [DEBUG 13:48:36,714] HttpContext HttpContext[/test,/test] > consumed all of path /test, redirect to http://localhost:8945/test/ > [DEBUG 13:48:36,715] HttpInputStream resetStream() > [DEBUG 13:48:36,715] HttpConnection RESPONSE: > HTTP/1.1 302 Moved Temporarily > Date: Fri, 19 Aug 2005 17:48:36 GMT > Server: Jetty/5.1.x (Linux/2.6.11.10 i386 java/1.5.0_03 > Location: http://localhost:8945/test/ > Transfer-Encoding: chunked > > > [DEBUG 13:48:36,715] HttpConnection readRequest() ... > [DEBUG 13:48:36,716] HttpConnection new HttpConnection: > Socket[addr=/127.0.0.1,port=56727,localport=8945] > [DEBUG 13:48:36,720] HttpConnection readRequest() ... > [DEBUG 13:48:36,720] HttpConnection REQUEST from > SocketListener0@0.0.0.0:8945: > GET /test/ HTTP/1.1 > User-Agent: Java/1.5.0_03 > Host: localhost:8945 > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 > Connection: keep-alive > Content-Type: application/x-www-form-urlencoded > > > [DEBUG 13:48:36,720] HttpServer Contexts at /test/: > [/test/*=[HttpContext[/test,/test]]] > [DEBUG 13:48:36,721] HttpConnection EXCEPTION > EOFException() > at org.mortbay.http.HttpRequest.readHeader(HttpRequest.java:239) > at org.mortbay.http.HttpConnection.readRequest(HttpConnection.java:863) > at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:909) > at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) > at > org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) > at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > [DEBUG 13:48:36,721] HttpServer Try HttpContext[/test,/test],0 > [DEBUG 13:48:36,722] HttpContext Handler test in > HttpContext[/test,/test] > [DEBUG 13:48:36,723] HttpContext Handled by test in > HttpContext[/test,/test] > [DEBUG 13:48:36,723] HttpInputStream resetStream() > [DEBUG 13:48:36,723] HttpConnection RESPONSE: > HTTP/1.1 200 OK > Date: Fri, 19 Aug 2005 17:48:36 GMT > Server: Jetty/5.1.x (Linux/2.6.11.10 i386 java/1.5.0_03 > Transfer-Encoding: chunked > > > [DEBUG 13:48:36,723] HttpConnection readRequest() ... > [INFO 13:48:36,724] SessionState changeState: S_LIVE to > S_NOT_CONNECTED > [DEBUG 13:48:36,724] PinkDesktopService stopping http server ... > [DEBUG 13:48:36,724] Container Stopping > org.mortbay.http.HttpServer@9664a1 > [DEBUG 13:48:36,724] ThreadedServer closing > ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8945] > [DEBUG 13:48:36,726] ThreadedServer IGNORED > java.net.SocketException: Socket closed > at java.net.PlainSocketImpl.socketAccept(Native Method) > at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) > at java.net.ServerSocket.implAccept(ServerSocket.java:450) > at java.net.ServerSocket.accept(ServerSocket.java:421) > at > org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) > at > org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:629) > [DEBUG 13:48:36,726] ThreadedServer Self connect to close listener > /127.0.0.1:8945 > [INFO 13:48:36,726] ThreadedServer Stopping Acceptor > ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8945] > [DEBUG 13:48:36,727] ThreadedServer problem stopping acceptor > localhost.localdomain/127.0.0.1: > java.net.ConnectException: Connection refused > at java.net.PlainSocketImpl.socketConnect(Native Method) > at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) > at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) > at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) > at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364) > at java.net.Socket.connect(Socket.java:507) > at java.net.Socket.connect(Socket.java:457) > at java.net.Socket.<init>(Socket.java:365) > at java.net.Socket.<init>(Socket.java:207) > at > org.mortbay.util.ThreadedServer$Acceptor.forceStop(ThreadedServer.java:680) > at org.mortbay.util.ThreadedServer.stop(ThreadedServer.java:557) > at org.mortbay.http.SocketListener.stop(SocketListener.java:211) > at org.mortbay.http.HttpServer.doStop(HttpServer.java:781) > at org.mortbay.util.Container.stop(Container.java:154) > at org.mortbay.http.HttpServer.stop(HttpServer.java:823) > at > com.pinksheets.dealer.pinkdesk.PinkDesktopService.stop(PinkDesktopService.java:165) > > at > com.pinksheets.dealer.pinkdesk.PinkDesktopService.stateChangeOccured(PinkDesktopService.java:184) > > at > com.pinksheets.dealer.pinkdesk.PinkDesktopService.stateChangeOccured(PinkDesktopService.java:1) > > at > com.pinksheets.dealer.session.SessionState.fireStateChangeEvent(SessionState.java:110) > > at > com.pinksheets.state.SimpleStateManager.fireStateChangeEvent(SimpleStateManager.java:197) > > at > com.pinksheets.dealer.session.SessionState.superFireStateChangeEvent(SessionState.java:104) > > at > com.pinksheets.dealer.session.SessionState.fireStateChangeEvent(SessionState.java:93) > > at > com.pinksheets.state.SimpleStateManager.changeState(SimpleStateManager.java:125) > > at > com.pinksheets.state.SimpleStateManager.changeState(SimpleStateManager.java:96) > > at > com.pinksheets.dealer.pinkdesk.test.PinkDesktopServiceTest.doDisconnect(PinkDesktopServiceTest.java:132) > > at > com.pinksheets.dealer.pinkdesk.test.PinkDesktopServiceTest.testPD(PinkDesktopServiceTest.java:110) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > > [DEBUG 13:48:36,729] HttpConnection EXCEPTION > java.net.SocketException: Socket closed > at java.net.SocketInputStream.read(SocketInputStream.java:162) > at org.mortbay.util.LineInput.fill(LineInput.java:469) > at org.mortbay.util.LineInput.fillLine(LineInput.java:547) > at org.mortbay.util.LineInput.readLineBuffer(LineInput.java:293) > at org.mortbay.util.LineInput.readLineBuffer(LineInput.java:277) > at org.mortbay.http.HttpRequest.readHeader(HttpRequest.java:238) > at org.mortbay.http.HttpConnection.readRequest(HttpConnection.java:863) > at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:909) > at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) > at > org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) > at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > [INFO 13:48:36,729] SocketListener Stopped SocketListener on > 0.0.0.0:8945 > [DEBUG 13:48:36,731] Container Stopping HttpContext[/test,/test] > [DEBUG 13:48:36,731] AbstractHttpHandler Stopped test in > HttpContext[/test,/test] > [INFO 13:48:36,760] Container Stopped HttpContext[/test,/test] > [INFO 13:48:36,760] Container Stopped > org.mortbay.http.HttpServer@9664a1 > [INFO 13:48:36,760] SessionState changeState: S_NOT_CONNECTED to > S_ATTEMPTING_LOGIN > [INFO 13:48:36,760] SessionState changeState: S_ATTEMPTING_LOGIN > to S_LIVE > [DEBUG 13:48:36,760] Container Starting > org.mortbay.http.HttpServer@9664a1 > [INFO 13:48:36,760] HttpServer Version Jetty/5.1.x > [DEBUG 13:48:36,761] HttpServer LISTENERS: > [SocketListener0@0.0.0.0:8945] > [DEBUG 13:48:36,761] HttpServer HANDLER: > {null={/test/*=[HttpContext[/test,/test]]}} > [DEBUG 13:48:36,761] Container Starting HttpContext[/test,/test] > [DEBUG 13:48:36,761] HttpContext Init classloader from null, > sun.misc.Launcher$AppClassLoader@133056f for HttpContext[/test,/test] > [DEBUG 13:48:36,761] AbstractHttpHandler Started test in > HttpContext[/test,/test] > [INFO 13:48:36,761] Container Started HttpContext[/test,/test] > [DEBUG 13:48:36,761] ThreadedServer IGNORED > java.net.SocketException: Socket is closed > at java.net.ServerSocket.accept(ServerSocket.java:417) > at > org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) > at > org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:629) > [DEBUG 13:48:36,762] ThreadedServer IGNORED > java.net.SocketException: Socket is closed > at java.net.ServerSocket.accept(ServerSocket.java:417) > at > org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) > at > org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:629) > [INFO 13:48:36,762] SocketListener Started SocketListener on > 0.0.0.0:8945 > [DEBUG 13:48:36,762] ThreadedServer IGNORED > java.net.SocketException: Socket is closed > at java.net.ServerSocket.accept(ServerSocket.java:417) > at > org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) > at > org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:629) > [INFO 13:48:36,762] Container Started > org.mortbay.http.HttpServer@9664a1 > > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA > Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf > _______________________________________________ > Jetty-support mailing list > Jet...@li... > https://lists.sourceforge.net/lists/listinfo/jetty-support > |