Skip to content

執行

執行 Ktor 伺服器應用程式時,請考量以下細節:

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

配置細節

配置:程式碼 vs 配置檔案

執行 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 允許你透過使用自動重新載入 (Auto-reload) 來克服此限制,它會在程式碼變更時重新載入應用程式類別,並提供快速的回饋循環。

使用 Gradle/Maven 執行應用程式

要使用 Gradle 或 Maven 執行 Ktor 應用程式,請使用對應的外掛程式:

若要了解如何在 IntelliJ IDEA 中執行 Ktor 應用程式,請參閱 IntelliJ IDEA 文件中的 Run a Ktor application 章節。

執行封裝好的應用程式

在部署應用程式之前,你需要以 Packaging 章節中描述的其中一種方式對其進行封裝。 從產出的套件執行 Ktor 應用程式取決於套件類型,可能如下所示:

  • 若要執行封裝在 fat JAR 中的 Ktor 伺服器並覆寫配置的連接埠,請執行以下指令:

    Bash
    java -jar sample-app.jar -port=8080
  • 若要執行使用 Gradle Application 外掛程式封裝的應用程式,請執行對應的可執行檔:

  • 若要執行 servlet Ktor 應用程式,請使用 Gretty 外掛程式的 run 任務。

    bash
    ./gradlew run