Skip to content

运行

运行 Ktor 服务器应用程序时,请考虑以下具体事项:

在本主题中,我们将探讨这些配置细节,并向您展示如何在 IntelliJ IDEA 中以及作为打包应用程序运行 Ktor 应用程序。

配置细节

配置:代码与配置文件

运行 Ktor 应用程序取决于您用于 创建服务器 的方式——embeddedServerEngineMain

  • 对于 embeddedServer,服务器形参(例如主机地址和端口)是在代码中配置的,因此在运行应用程序时无法更改这些形参。
  • 对于 EngineMain,Ktor 从使用 HOCONYAML 格式的外部文件加载其配置。使用这种方法,您可以从命令行运行 打包的应用程序,并通过传递相应的 命令行实参 来覆盖所需的服务器形参。

启动 EngineMain:Gradle 和 Maven 细节

如果您使用 EngineMain 创建服务器,则需要指定 main 函数来启动具有所需 引擎 的服务器。 下面的 示例 演示了用于使用 Netty 引擎运行服务器的 main 函数:

kotlin
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

要在不配置 main 函数中的引擎的情况下使用 Gradle/Maven 运行 Ktor 服务器,您需要在构建脚本中指定主类名,如下所示:

kotlin
application {
    mainClass.set("io.ktor.server.netty.EngineMain")
}
groovy
mainClassName = "io.ktor.server.netty.EngineMain"
xml
<properties>
    <main.class>io.ktor.server.netty.EngineMain</main.class>
</properties>

WAR 细节

Ktor 允许您直接在应用程序中 创建和启动服务器,并使用所需的引擎(例如 Netty、Jetty 或 Tomcat)。在这种情况下,您的应用程序可以控制引擎设置、连接和 SSL 选项。

与此方法相反,servlet 容器应该控制应用程序生命周期和连接设置。Ktor 提供了一个特殊的 ServletApplicationEngine 引擎,它将应用程序的控制权委托给 servlet 容器。关于如何配置应用程序,请参见 配置 War

运行应用程序

开发过程中重启服务器可能需要一些时间。Ktor 允许您通过使用 自动重新加载 来克服此限制,它会在代码更改时重新加载应用程序类并提供快速反馈循环。

使用 Gradle/Maven 运行应用程序

要使用 Gradle 或 Maven 运行 Ktor 应用程序,请使用相应的插件:

关于如何在 IntelliJ IDEA 中运行 Ktor 应用程序,请参见 IntelliJ IDEA 文档中的 运行 Ktor 应用程序 部分。

运行打包应用程序

在部署应用程序之前,您需要通过 打包 部分中描述的其中一种方式将其打包。 从结果包运行 Ktor 应用程序取决于包类型,并可能如下所示:

  • 要运行打包在 Fat JAR 中并覆盖已配置端口的 Ktor 服务器,请执行以下命令:

    Bash
    java -jar sample-app.jar -port=8080
  • 要运行使用 Gradle Application 插件打包的应用程序,请运行相应的可执行文件:

  • 要运行 servlet Ktor 应用程序,请使用 Gretty 插件的 run 任务。