Skip to content

執行

執行 Ktor 伺服器應用程式時,請考慮以下特定事項:

在本主題中,我們將探討這些配置細節,並向您展示如何在 IntelliJ IDEA 中以及作為打包應用程式來執行 Ktor 應用程式。

配置細節

配置:程式碼 vs 配置檔案

執行 Ktor 應用程式取決於您用來 建立伺服器 的方式 — embeddedServerEngineMain

  • 對於 embeddedServer,伺服器參數(例如 host address 和 port)是在程式碼中配置的,因此在執行應用程式時無法更改這些參數。
  • 對於 EngineMain,Ktor 會從使用 HOCONYAML 格式的外部檔案載入其配置。使用這種方法,您可以從命令列執行 打包好的應用程式,並透過傳遞相應的 命令列引數 來覆寫所需的伺服器參數。

啟動 EngineMain:Gradle 和 Maven 特定事項

如果您使用 EngineMain 建立伺服器,您需要指定 main 函數,以便用所需的 engine 啟動伺服器。 下面的 範例 展示了用於使用 Netty engine 執行伺服器的 main 函數:

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

要使用 Gradle/Maven 執行 Ktor 伺服器,而不在 main 函數內部配置 engine,您需要在建置腳本中指定 main class name,如下所示:

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 允許您在應用程式中直接 建立並啟動伺服器,使用所需的 engine(例如 Netty、Jetty 或 Tomcat)。在這種情況下,您的應用程式可以控制 engine 設定、連線和 SSL 選項。

與此方法相反,Servlet 容器應控制應用程式生命週期和連線設定。Ktor 提供了一個特殊的 ServletApplicationEngine engine,它將您的應用程式控制權委派給 Servlet 容器。您可以從 配置 WAR 了解如何配置您的應用程式。

執行應用程式

在開發過程中重新啟動伺服器可能需要一些時間。Ktor 允許您透過使用 Auto-reload 來克服此限制,它在程式碼變更時重新載入應用程式類別,並提供快速的回饋循環。

使用 Gradle/Maven 執行應用程式

要使用 Gradle 或 Maven 執行 Ktor 應用程式,請使用相應的 plugin:

要了解如何在 IntelliJ IDEA 中執行 Ktor 應用程式,請參閱 IntelliJ IDEA 文件中的 執行 Ktor 應用程式 部分。

執行打包好的應用程式

在部署您的應用程式之前,您需要以 打包 部分中描述的其中一種方式將其打包。 從產生的 package 執行 Ktor 應用程式取決於 package 類型,可能如下所示:

  • 要執行打包在 fat JAR 中的 Ktor 伺服器並覆寫配置的 port,請執行以下命令:
Bash
java -jar sample-app.jar -port=8080
  • 要執行使用 Gradle Application plugin 打包的應用程式,請執行相應的可執行檔:
  • 要執行 Servlet Ktor 應用程式,請使用 Gretty plugin 的 run task。