• Jetty启动配置解析


    1. jetty概述

    维基百科:Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。

    Jetty Server是一个Connector集合和一个Handler集合间的管道,Connector用于接收HTTP连接,Handler服务来自连接的请求并作出响应,Jetty Server使用来自一个线程池的线程来处理这些工作。

    2. spring-jetty启动配置

    jetty可以通过配置文件的方式启动,按照spring加载配置文件的方式即可:

    ctx = new ClassPathXmlApplicationContext("classpath:spring-jetty.xml");
    

    jetty.xml主要完成Server类ThreadPool、连接器ConnectorHandler等主要组件的配置。

    2.1 Server类
    <bean id="Server" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
    

    Server类作为jetty的入口,其初始化方法是start,销毁方法是stop。如果以java代码形式也可以,如下:

        public static void main(String[] args) throws Exception {
            startJetty(PORT);
        }
    
        private static void startJetty(int port) throws Exception {
            LOGGER.debug("Starting server at port {}", port);
            Server server = new Server(port);
            //配置, 略
            ...
            addRuntimeShutdownHook(server);
            //启动
            server.start();
            logger.info("Server started at port {}", port);
            server.join();
        }
    
        //系统关闭销毁操作
        private static void addRuntimeShutdownHook(final Server server) {
            Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                if (server.isStarted()) {
                    server.setStopAtShutdown(true);
                    try {
                        // 销毁
                        server.stop();
                    } catch (Exception e) {
                        System.out.println("Error while stopping jetty server: " + e.getMessage());
                    }
                }
            }));
        }
    
    
    2.2 Connector

    Connector,它负责接受客户端的连接请求,基于NIO方式。

    2.3 Handler

    handler链,为Server所管理,请求的具体执行由链中的handler负责。

  • 相关阅读:
    从体制内的国家干部转变为自由职业者-2017年总结
    为什么选择Django?
    Django contrib Comments 评论模块详解
    Django 2.0 新特性 抢先看!
    Python 为何能坐稳 AI 时代头牌语言
    为什么说Python 是大数据全栈式开发语言
    继承中的构造方法
    super关键字
    方法的重写
    类的继承与访问控制
  • 原文地址:https://www.cnblogs.com/eaglediao/p/9451638.html
Copyright © 2020-2023  润新知