2、Ktor学习-自动重新加载;
在开发过程中,快速反馈循环周期非常重要。 通常,重新启动服务器可能需要一些时间,因此Ktor提供了一个基本的自动重载工具,可以重新加载Application类。
注:自动重载不支持java 9,如果要使用该功能则需要使用JDK8;
类改变时自动重新加载
在这两种情况下,使用embeddedServer或配置文件时,您必须提供一个与您要监视的类加载器相匹配的监视子字符串列表。
例如,使用gradle时的典型类加载器如下所示:
/Users/user/projects/ktor-exercises/solutions/exercise4/build/classes/kotlin/main
在这种情况下,您可以使用solutions/exercise4字符串或者仅使用exercise4字符串,它将匹配该类加载器。
使用embeddedServer
使用自定义主服务器和embeddedServer时,可以使用可选参数watchPaths提供将被监视和重新加载的子路径列表。
fun main(args: Array<String>) {embeddedServer(Netty,watchPaths = listOf("solutions/exercise4"),port = 8080,module = Application::mymodule).apply { start(wait = true) }
}fun Application.mymodule() {routing {get("/plain") {call.respondText("Hello World!")}}
}
通过application.conf配置
使用配置文件时,例如使用EngineMain从命令行运行或托管在服务器容器中:要启用此功能,请将watch的key添加到ktor.deployment配置。
watch - 应该监视并自动重新加载的类路径条目的数组。ktor {deployment {port = 8080watch = [ module1, module2 ]}…
}
现在,watch键只是与contains相匹配的字符串,与加载的应用程序中的类路径条目相对应,例如jar名称或项目目录名称。 然后使用特殊的ClassLoader加载这些类,该类在检测到更改时被回收。
注:类路径条目看起来像file:/path/to/project/build/classes/myproject.jar,所以/ project会匹配,但com.mydomain不会。
在源代码更改时自动重新编译
由于自动重载功能仅检测类文件中的更改,因此您必须自己编译应用程序。 你可以在运行时使用IntelliJ IDEA和Build - > Build Project来实现。
但是,您也可以使用gradle自动检测源更改并为您编译。 您只需在项目文件夹中打开另一个终端并运行:gradle -t build。 它将编译应用程序,在执行此操作后,它将侦听其他源更改并在必要时重新编译。 因此,触发自动类重新加载。 然后,您可以使用另一个终端以gradle run运行应用程序。
例子
您可以使用build.gradle或直接在IDE中运行应用程序。 执行示例文件中的main方法,或执行:io.ktor.server.netty.EngineMain.main。 使用commandLineEnvironment的EngineMain将负责加载application.conf文件(即HOCON格式)。
main.kt
package io.ktor.exercise.autoreloadimport io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*// Exposed as: `static void io.ktor.exercise.autoreload.MainKt.main(String[] args)`
fun main(args: Array<String>) {//io.ktor.server.netty.main(args) // Manually using Netty's EngineMainembeddedServer(Netty, watchPaths = listOf("solutions/exercise4"), port = 8080,module = Application::module).apply { start(wait = true)
}// Exposed as: `static void io.ktor.exercise.autoreload.MainKt.module(Application receiver)`
fun Application.module() {routing {get("/plain") {call.respondText("Hello World!")}}
}
application.conf
ktor {deployment {port = 8080watch = [ solutions/exercise4 ]}application {modules = [ io.ktor.exercise.autoreload.MainKt.module ]}
}
2、Ktor学习-自动重新加载;相关推荐
- logstash 自动重新加载配置
自动重新加载配置 为了可以自动检测配置文件的变动和自动重新加载配置文件,需要在启动的时候使用以下命令: ./bin/lagstash -f configfile.conf --config.reloa ...
- 【深度学习】Keras加载权重更新模型训练的教程(MobileNet)
[深度学习]Keras加载权重更新模型训练的教程(MobileNet) 文章目录 1 重新训练 2 keras常用模块的简单介绍 3 使用预训练模型提取特征(口罩检测) 4 总结 1 重新训练 重新建 ...
- 深入java虚拟机学习 -- 类的加载机制(续)
昨晚写 深入java虚拟机学习 -- 类的加载机制 都到1点半了,由于第二天还要工作,没有将上篇文章中的demo讲解写出来,今天抽时间补上昨晚的例子讲解. 这里我先把昨天的两份代码贴过来,重新看下: ...
- JVM学习笔记-03-类加载器及双亲委派机制
JVM学习笔记-03-类加载器及双亲委派机制 文章目录 JVM学习笔记-03-类加载器及双亲委派机制 1. 类加载器 视频链接-最新JVM教程IDEA版[Java面试速补篇]-03-类加载器及双亲委派 ...
- 安卓插件化学习 - 类的加载
安卓插件化学习 - 类的加载 引言 一.类的加载 1. 原理 2. 代码 2.1 宿主apk代码 2.1.1 插件管理器 2.1.2 配置文件 2.1.3 插件初始化 2.1.4 调用插件方法 2.2 ...
- JS重启自动运行加载视频错误
JS重启自动运行加载视频错误 问题 原因 结论 问题 各种浏览器调试运行都没问题,系统启动自动运行Chrome加载网页就会出现页面错位错误 原因 调试发现 两个层之间的视频加载错误了 结论 也就是说系 ...
- STC15W204S串口通讯,设置自动热加载程序代码(自动下载代码)
stc15w204s体积非常的小,只有8个引脚,非常的迷你,它就是15系列的缩水版,引脚好似从芯片中间横腰切断了一样,定义排序和完全版本是相同的. 如此迷你,对我这种强迫症的人来说就是一个福音啊,网上 ...
- 加载动画php,CSS3学习之页面加载动画(二)
本篇文章给大家分享6种css3的页面加载动画.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 在之前的文章[CSS3学习之页面加载动画(一)]中已经分享了四个CSS3的加载动画,今天 ...
- node学习笔记--模块加载
学习笔记过程,自己理解,方便自己查询,新手一枚,希望批评指正. 使用 webstrom 编辑器 可以将安装的node.exe 配置进去,直接运行,可自行百度配置. 通过命令行参数传递给NodeJS以启 ...
最新文章
- Python的深浅拷贝讲解!
- java 手机号脱敏,身份证号脱敏 工具类
- lastpass密码管理工具使用教程
- jenkin系列_调度jmeter实现分布式测试
- 因特网 以太网 互联网的含义及区别
- slf4j在linux位置,SLF4J环境设置
- 音乐 美术 计算机期末考试表,2021东莞中考音乐美术信息技术合格性考试时间安排...
- 无线通信信道的衰落特性(大尺度衰落和小尺度衰落)
- 安装erlang没有bin文件夹_RabbitMQ安装教程
- C#如何卸载已安装的Windows Service服务
- bat 等待输入_继续提速——双拼的进阶,音形输入
- stm32使用AD采样需要注意的一些小问题
- 导航栏隐藏的正确方式
- 生活,人艰不拆......
- SX1278 Lora网关
- 机器学习模型设计准则:“无免费午餐”定理和“奥卡姆剃刀”原则
- Telnet英文全称
- sublime text3安装python插件和flake8_让你用sublime写出最完美的python代码--windows环境-搜云库...
- jQuery Cookbook中文版
- C语言数据结构与算法---图的遍历
热门文章
- 从零开始搭建基于CEFGlue的CB/S的winform项目
- Virtualbox设置虚拟机访问外网以及主机访问虚拟机
- google-perftools优化nginx在高并发时的性能
- Vim实战指南(一):基础编辑命令
- 1. Action 实现 ModelDriven 接口后的运行流程
- linux计划任务作业
- 海思芯片固件修改工具_地平线X3开发板开箱、固件刷写、环境配置
- c语言折半查找法_C语言学习|选择法排序及折半查找法查找
- 网站漏洞扫描工具Uniscan
- 二元函数求最小值 c语言,用C语言实现简单的多元线性回归算法(二)