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)

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オプションを制御できます。

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

アプリケーションの実行

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

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

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

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

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

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

  • ファットJAR(fat JAR)にパッケージ化されたKtorサーバーを実行し、構成されたポートをオーバーライドするには、次のコマンドを実行します。

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

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

    ./gradlew run