Skip to content

実行

Ktorサーバーアプリケーションを実行する際には、以下の点に注意してください。

このトピックでは、これらの設定の詳細を確認し、IntelliJ IDEAおよびパッケージ化されたアプリケーションとしてKtorアプリケーションを実行する方法を説明します。

設定の詳細

設定: コード vs 設定ファイル

Ktorアプリケーションの実行は、サーバーを作成した方法 (embeddedServer または EngineMain) によって異なります。

  • embeddedServer の場合、サーバーパラメーター (ホストアドレスやポートなど) はコードで設定されるため、アプリケーションの実行時にこれらのパラメーターを変更することはできません。
  • EngineMain の場合、Ktorは HOCON または YAML 形式を使用する外部ファイルから設定をロードします。このアプローチを使用すると、コマンドラインからパッケージ化されたアプリケーションを実行し、対応するコマンドライン引数を渡すことで、必要なサーバーパラメーターを上書きできます。

EngineMainの起動: GradleとMavenの特記事項

EngineMain を使用してサーバーを作成する場合、目的のエンジンでサーバーを起動するための main 関数を指定する必要があります。 以下のは、Nettyエンジンでサーバーを実行するために使用される main 関数を示しています。

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

Gradle/Mavenを使用して、main 関数内でエンジンを設定せずに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オプションを制御できます。

このアプローチとは対照的に、サーブレットコンテナはアプリケーションのライフサイクルと接続設定を制御すべきです。Ktorは、アプリケーションの制御をサーブレットコンテナに委譲する特別な ServletApplicationEngine エンジンを提供します。WARの構成からアプリケーションの設定方法を学ぶことができます。

アプリケーションの実行

開発中にサーバーを再起動すると時間がかかる場合があります。Ktorは、コード変更時にアプリケーションクラスをリロードし、高速なフィードバックループを提供する自動リロードを使用することで、この制限を克服できます。

Gradle/Mavenを使用したアプリケーションの実行

GradleまたはMavenを使用してKtorアプリケーションを実行するには、対応するプラグインを使用します。

IntelliJ IDEAでKtorアプリケーションを実行する方法については、IntelliJ IDEAドキュメントのKtorアプリケーションの実行セクションを参照してください。

パッケージ化されたアプリケーションの実行

アプリケーションをデプロイする前に、パッケージングセクションで説明されているいずれかの方法でパッケージ化する必要があります。 生成されたパッケージからKtorアプリケーションを実行する方法は、パッケージの種類によって異なり、次のようになります。

  • 設定されたポートを上書きしてファットJARにパッケージ化されたKtorサーバーを実行するには、次のコマンドを実行します。

    Bash
    java -jar sample-app.jar -port=8080
  • Gradle Applicationプラグインを使用してパッケージ化されたアプリケーションを実行するには、対応する実行可能ファイルを起動します。

  • サーブレットKtorアプリケーションを実行するには、Grettyプラグインの run タスクを使用します。