実行
Ktorサーバーアプリケーションを実行する際には、以下の点に注意してください。
- サーバーを作成する方法によって、パッケージ化されたKtorアプリケーションを実行する際にコマンドライン引数を渡してサーバーパラメーターを上書きできるかどうかが変わります。
- Gradle/Mavenのビルドスクリプトでは、EngineMainを使用してサーバーを起動する際にメインクラス名を指定する必要があります。
- サーブレットコンテナ内でアプリケーションを実行するには、特定のサーブレット設定が必要です。
このトピックでは、これらの設定の詳細を確認し、IntelliJ IDEAおよびパッケージ化されたアプリケーションとしてKtorアプリケーションを実行する方法を説明します。
設定の詳細
設定: コード vs 設定ファイル
Ktorアプリケーションの実行は、サーバーを作成した方法 (embeddedServer
または EngineMain
) によって異なります。
embeddedServer
の場合、サーバーパラメーター (ホストアドレスやポートなど) はコードで設定されるため、アプリケーションの実行時にこれらのパラメーターを変更することはできません。EngineMain
の場合、KtorはHOCON
またはYAML
形式を使用する外部ファイルから設定をロードします。このアプローチを使用すると、コマンドラインからパッケージ化されたアプリケーションを実行し、対応するコマンドライン引数を渡すことで、必要なサーバーパラメーターを上書きできます。
EngineMainの起動: GradleとMavenの特記事項
EngineMain
を使用してサーバーを作成する場合、目的のエンジンでサーバーを起動するための main
関数を指定する必要があります。 以下の例は、Nettyエンジンでサーバーを実行するために使用される main
関数を示しています。
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
Gradle/Mavenを使用して、main
関数内でエンジンを設定せずにKtorサーバーを実行するには、次のようにビルドスクリプトでメインクラス名を指定する必要があります。
application {
mainClass.set("io.ktor.server.netty.EngineMain")
}
mainClassName = "io.ktor.server.netty.EngineMain"
<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アプリケーションを実行するには、対応するプラグインを使用します。
- Gradle用のApplicationプラグイン。ネイティブサーバーの場合は、Kotlin Multiplatformプラグインを使用します。
- Maven用のExecプラグイン。
IntelliJ IDEAでKtorアプリケーションを実行する方法については、IntelliJ IDEAドキュメントのKtorアプリケーションの実行セクションを参照してください。
パッケージ化されたアプリケーションの実行
アプリケーションをデプロイする前に、パッケージングセクションで説明されているいずれかの方法でパッケージ化する必要があります。 生成されたパッケージからKtorアプリケーションを実行する方法は、パッケージの種類によって異なり、次のようになります。
設定されたポートを上書きしてファットJARにパッケージ化されたKtorサーバーを実行するには、次のコマンドを実行します。
Bashjava -jar sample-app.jar -port=8080
Gradle Applicationプラグインを使用してパッケージ化されたアプリケーションを実行するには、対応する実行可能ファイルを起動します。
サーブレットKtorアプリケーションを実行するには、Grettyプラグインの
run
タスクを使用します。