美文网首页
jboot01:服务启动

jboot01:服务启动

作者: 城南码农 | 来源:发表于2018-01-23 22:29 被阅读0次

jboot 可以算是扩展了jfinal,整合了一些流行技术的微服务开发框架。具体介绍参见:https://gitee.com/fuhai/jboot

微服务概念
服务启动

public static void main(String [] args){ Jboot.run(args); }
看一下做了哪些事情

  • 解析启动参数(通过main方法传入)
  • 打印banner信息
  • 打印配置信息
  • 通过JbootServerFactory 构建内置的服务器(分别支持undertow,tomcat,jetty)
  • 启动服务器,完成主要的初始化。(重点关注)
  • 打印服务部署的信息
    重点关注 UnderTowServer类 initUndertowServer方法
public void initUndertowServer() {

//设置类加载器
        JbootServerClassloader classloader = new JbootServerClassloader(UnderTowServer.class.getClassLoader());
        classloader.setDefaultAssertionStatus(false);

//构建部署信息,包括过滤器,监听器,servlet。 包括jfinal核心的JFinalFilter
        deploymentInfo = buildDeploymentInfo(classloader);

        if (webConfig.isWebsocketEnable()) {
            Set<Class> endPointClasses = JbootWebsocketManager.me().getWebsocketEndPoints();
            WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
            webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(true, webConfig.getWebsocketBufferPoolSize()));
            for (Class endPointClass : endPointClasses) {
                webSocketDeploymentInfo.addEndpoint(endPointClass);
            }
            deploymentInfo.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME, webSocketDeploymentInfo);
        }

        servletContainer = Servlets.newContainer();
        deploymentManager = servletContainer.addDeployment(deploymentInfo);
//部署到容器
        deploymentManager.deploy();

        HttpHandler httpHandler = null;
        try {
            /**
             * 启动并初始化servlet和filter
             */
            httpHandler = deploymentManager.start();
        } catch (Throwable ex) {
            ex.printStackTrace();
        }


        pathHandler = Handlers.path(
                Handlers.resource(new ClassPathResourceManager(classloader, "webRoot")));

        pathHandler.addPrefixPath(config.getContextPath(), httpHandler);

        undertow = Undertow.builder()
                .addHttpListener(config.getPort(), config.getHost())
                .setHandler(pathHandler)
                .build();

    }

Undertow是一个轻量级的web容器,可以通过api来快速构建一个内置的web容器,来提供服务能力。
这里不关注web容器api的使用,我们只用关注buildDeploymentInfo方法。JFinalFilter拦截所有的请求,进入了jfinal的mvc处理流程。

相关文章

  • jboot01:服务启动

    jboot 可以算是扩展了jfinal,整合了一些流行技术的微服务开发框架。具体介绍参见:https://gite...

  • CentOS7中firewall的基本操作

    1、firewall服务的启动停止 启动服务: 关闭服务: 运行状态: 禁止开启启动: 开机启动: 查看启动失败的...

  • springboot启动Jarshell脚本

    启动单个服务 启动多个服务

  • 断路器 (Hystrix Feign)

    启动【服务中心】集群,Eureka Server 启动【服务提供者】集群,Eureka Client 启动【服务消...

  • Http Traffic 使用帮助

    1,启动HttpTraffic 后请点击启动按钮启动抓包服务,稍等几秒钟后服务启动完成 2,服务启动完成状态, 3...

  • Centos8 yum方式安装Mysql

    yum安装 检查是否已经设置为开机启动 设置开机启动 查看是否启动MySQL服务 启动服务 关闭服务 mysql登...

  • 【MySQL】6.0 入门学习(六)——MySQL启动与停止、官

    1.0 MySQL主要有四种启动方式:直接启动、安全启动、服务启动、多实例启动。 直接启动: ​ 服务器启动: ​...

  • Android服务Service

    一、普通服务 1 . 定义服务 2 . 启动和停止服务 启动服务 停止服务stopService (servic...

  • centos7防火墙firewalld配置

    启动 停止: 重启: 查看状态: 开机启动: 开机禁用: 查看服务是否开机启动: 查看已启动的服务列表: 查看启动...

  • jhipster快速启动微服务

    jhipster快速启动微服务 jh微服务最简启动需要注册中心、网关、业务微服务A。启动顺序注册中心、网关、微服务...

网友评论

      本文标题:jboot01:服务启动

      本文链接:https://www.haomeiwen.com/subject/hgcrnxtx.html