Skip to content

コードによる設定

コードによる設定

Ktorでは、ホストアドレス、ポート、

サーバーモジュール
モジュールを使用すると、ルートをグループ化してアプリケーションを構造化できます。
など、さまざまなサーバーパラメータをコード内で直接設定できます。設定方法は、サーバーのセットアップ方法(
embeddedServerまたはEngineMain
アプリケーションのデプロイのニーズに応じてサーバーを作成する方法を学びます。
のどちらを使用するか)によって異なります。

embeddedServerを使用する場合、必要なパラメータを関数に直接渡すことでサーバーを設定します。 embeddedServer 関数は、

サーバーエンジン
ネットワークリクエストを処理するエンジンについて学びます。
、サーバーがリッスンするホストとポート、および追加の設定など、サーバーを構成するためのさまざまなパラメータを受け取ります。

このセクションでは、サーバーを効果的に設定する方法を示すために、embeddedServerを実行するいくつかの異なる例を見ていきます。

基本設定

以下のコードスニペットは、Nettyエンジンと8080ポートを使用した基本的なサーバーセットアップを示しています。

kotlin

portパラメータを0に設定すると、サーバーをランダムなポートで実行できることに注意してください。 embeddedServer関数はエンジンインスタンスを返すため、 ApplicationEngine.resolvedConnectors 関数を使用してコード内でポート値を取得できます。

エンジン設定

embeddedServer関数では、configureパラメータを使用してエンジン固有のオプションを渡すことができます。このパラメータには、すべてのエンジンに共通で、 ApplicationEngine.Configuration クラスによって公開されているオプションが含まれます。

以下の例は、Nettyエンジンを使用してサーバーを設定する方法を示しています。 configureブロック内で、connectorを定義してホストとポートを指定し、さまざまなサーバーパラメータをカスタマイズしています。

kotlin

connectors.add()メソッドは、指定されたホスト(127.0.0.1)とポート(8080)でコネクタを定義します。

これらのオプションに加えて、他のエンジン固有のプロパティを設定することもできます。

Netty

Netty固有のオプションは、 NettyApplicationEngine.Configuration クラスによって公開されています。

kotlin

Jetty

Jetty固有のオプションは、 JettyApplicationEngineBase.Configuration クラスによって公開されています。

configureServer ブロック内でJettyサーバーを設定できます。これにより、 Server インスタンスにアクセスできます。

idleTimeoutプロパティを使用して、接続が閉じられるまでにアイドル状態を維持できる期間を指定します。

kotlin

CIO

CIO固有のオプションは、 CIOApplicationEngine.Configuration クラスによって公開されています。

kotlin

Tomcat

エンジンとしてTomcatを使用する場合、 configureTomcat プロパティを使用して設定できます。これにより、 Tomcat インスタンスにアクセスできます。

kotlin

カスタム環境

以下の例は、 ApplicationEngine.Configuration クラスで表されるカスタム設定を使用して、複数のコネクタエンドポイントでサーバーを実行する方法を示しています。

kotlin

完全な例については、 embedded-server-multiple-connectors を参照してください。

TIP

カスタム環境を使用して HTTPSを提供 することもできます。

コマンドライン設定

Ktorでは、コマンドライン引数を使用してembeddedServerを動的に設定できます。これは、ポート、ホスト、タイムアウトなどの設定を実行時に指定する必要がある場合に特に便利です。

これを実現するには、 CommandLineConfig クラスを使用してコマンドライン引数を設定オブジェクトにパースし、それを設定ブロック内で渡します。

kotlin

この例では、Application.ConfigurationtakeFrom() 関数を使用して、porthostなどのエンジン設定値を上書きしています。 loadCommonConfiguration() 関数は、タイムアウトなどのルート環境からの設定をロードします。

サーバーを実行するには、次のように引数を指定します。

shell

TIP

静的な設定については、設定ファイルまたは環境変数を使用できます。 詳細については、 ファイルによる設定 を参照してください。