0

嵌入式 Jetty 关闭问题。

我在我的 java 应用程序中嵌入了码头。我从控制台运行应用程序。但是,每当我按 CONTROL+C 关闭服务器时,服务器都会正常关闭,但会引发一些套接字异常。这是运行码头服务器的代码

public class WebServerWrapper {

    private Server server;
    private SmppServerWrapper sw;
    /**
     * 
     */
    public WebServerWrapper() {
        server = new Server();
        // Set some default attributes
        server.setAttribute("org.mortbay.jetty.Request.maxFormContentSize", 0);
        server.setGracefulShutdown(5000);
        server.setStopAtShutdown(true);     
    }

    public WebServerWrapper(int port){
        server = new Server(port);
    }

    public void setHandler(ContextHandlerCollection contexts) {
        server.setHandler(contexts);
    }

    public void addConnector(Connector connector){
        server.addConnector(connector);
    }

    public void start() throws Exception {
        server.start();
        server.join();      
    }

    public void stop() throws Exception {
        sw = SmppServerWrapper.getInstance();
        sw.shutdown();
        server.stop();
    }

    public boolean isStarted() {
        return server.isStarted();
    }

    public boolean isStopped() {
        return server.isStopped();
    }   
}

This is the method that starts the server
private static void boostrap() throws Exception {

        // Load the configuration file
        if(new UnitySmppPortalConfigDAO().initialize()){

            final URL location = WebStartup.class.getClassLoader().getResource(
                    WEB_ROOT);
            final String warUrlString = location.toExternalForm();

            WebContextBuilder contextBuilder = new WebContextBuilder();
            WebAppContext context = contextBuilder.buildAppContext();
            context.setResourceBase(warUrlString);
            // context.setResourceBase(WEB_ROOT);
            context.setClassLoader(Thread.currentThread().getContextClassLoader());

            // Session Manager
            SessionHandler sh = new SessionHandler();
            context.setSessionHandler(sh);

            // Set the System property to handle the compilation of the jsp file
            System.setProperty("org.apache.jasper.compiler.disablejsr199", "true");

            // Connector connector = new SelectChannelConnector();
            SocketConnector connector = new SocketConnector();
            /*
             * connector.setPort(Integer.parseInt(System.getProperty("jetty.port",
             * new PropertiesConfiguration("smpp-config.properties")
             * .getString("http_port").trim())));
             */connector.setPort(Integer.parseInt(System.getProperty("jetty.port",
                    PORTAL_PORT)));

            connector.setMaxIdleTime(60000);
            connector.setHost("localhost");

            ContextHandlerCollection contexts = new ContextHandlerCollection();
            contexts.setHandlers(new Handler[] { context });

            final WebServerWrapper serverWrapper = new WebServerWrapper();
            serverWrapper.addConnector(connector);
            serverWrapper.setHandler(contexts);

            logger.info("Starting Jetty Web Container....");
            serverWrapper.start();
            logger.info("Jetty Web Container running....");         
        }
        else{
            logger.debug("Default Configuration File cannot be loaded");
        }
    }

这是我得到的错误代码

C:\Users\Arsene\Documents\UnitySmpp>2013-02-13/16:58:40.610  INFO: server.Server - Graceful shutdown SocketConnector@localhost:74
2013-02-13/16:58:40.685  INFO: server.Server - Graceful shutdown o.e.j.w.WebAppContext{/smpp,rsrc:com/smsgh/unitysmpp/Portal/}
2013-02-13/16:58:43.856 DEBUG: http.HttpParser - filled -1/0
2013-02-13/16:58:43.856 DEBUG: http.HttpParser - filled -1/0
2013-02-13/16:58:43.856 DEBUG: http.HttpParser - filled -1/0
2013-02-13/16:58:43.857 DEBUG: server.AbstractHttpConnection - closed BlockingHttpConnection@4ddf34bd,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=0,l=0,c=0},r=0
2013-02-13/16:58:43.858 DEBUG: server.AbstractHttpConnection - closed BlockingHttpConnection@62c524c1,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=0,l=0,c=0},r=0
2013-02-13/16:58:43.858 DEBUG: server.AbstractHttpConnection - closed BlockingHttpConnection@4794d608,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=0,l=0,c=0},r=0
2013-02-13/16:58:45.686 DEBUG: component.AbstractLifeCycle - stopping SocketConnector@localhost:74
2013-02-13/16:58:45.687 DEBUG: component.AbstractLifeCycle - stopping PooledBuffers [3/1024@6144,0/1024@16384,0/1024@-]/PooledBuffers [3/1024@6144,3/1024@32768,0/1024@-]
2013-02-13/16:58:45.687 DEBUG: component.AbstractLifeCycle - STOPPED null/null
2013-02-13/16:58:45.687 DEBUG: component.AbstractLifeCycle - STOPPED SocketConnector@localhost:74
2013-02-13/16:58:45.690 DEBUG: http.HttpParser -
java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
2013-02-13/16:58:45.694 DEBUG: http.HttpParser - HttpParser{s=-14,l=0,c=-3}
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more
2013-02-13/16:58:45.702 DEBUG: bio.SocketConnector - EOF
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more
2013-02-13/16:58:45.721 DEBUG: server.AbstractHttpConnection - closed BlockingHttpConnection@1ab979de,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=0,l=0,c=-3},r=7
2013-02-13/16:58:45.690 DEBUG: http.HttpParser -
java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
2013-02-13/16:58:45.738 DEBUG: http.HttpParser - HttpParser{s=-14,l=0,c=-3}
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more
2013-02-13/16:58:45.752 DEBUG: bio.SocketConnector - EOF
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more
2013-02-13/16:58:45.770 DEBUG: server.AbstractHttpConnection - closed BlockingHttpConnection@72d3b39a,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=0,l=0,c=-3},r=1
2013-02-13/16:58:45.690 DEBUG: http.HttpParser -
java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
2013-02-13/16:58:45.691 DEBUG: component.AbstractLifeCycle - stopping org.eclipse.jetty.server.handler.ContextHandlerCollection@6f91fefb
2013-02-13/16:58:45.786 DEBUG: http.HttpParser - HttpParser{s=-14,l=0,c=-3}
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more
2013-02-13/16:58:45.787 DEBUG: handler.AbstractHandler - stopping org.eclipse.jetty.server.handler.ContextHandlerCollection@6f91fefb
2013-02-13/16:58:45.804 DEBUG: bio.SocketConnector - EOF
org.eclipse.jetty.io.EofException
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1041)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:280)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at org.eclipse.jetty.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:375)
        at org.eclipse.jetty.io.bio.StreamEndPoint.fill(StreamEndPoint.java:141)
        at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.fill(SocketConnector.java:227)
        at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1035)
        ... 7 more

请协助

4

1 回答 1

0

Jetty 的调试输出非常冗长。您可以使用以下方法关闭它:

org.mortbay.log.Log.getLog().setDebugEnabled(false);
于 2013-02-13T17:24:46.803 回答