コードによる設定
コードによる設定
Ktorでは、ホストアドレス、ポート、
embeddedServerを使用する場合、必要なパラメータを関数に直接渡すことでサーバーを設定します。 embeddedServer 関数は、
このセクションでは、サーバーを効果的に設定する方法を示すために、embeddedServerを実行するいくつかの異なる例を見ていきます。
基本設定
以下のコードスニペットは、Nettyエンジンと8080ポートを使用した基本的なサーバーセットアップを示しています。
portパラメータを0に設定すると、サーバーをランダムなポートで実行できることに注意してください。 embeddedServer関数はエンジンインスタンスを返すため、 ApplicationEngine.resolvedConnectors 関数を使用してコード内でポート値を取得できます。
エンジン設定
embeddedServer関数では、configureパラメータを使用してエンジン固有のオプションを渡すことができます。このパラメータには、すべてのエンジンに共通で、 ApplicationEngine.Configuration クラスによって公開されているオプションが含まれます。
以下の例は、Nettyエンジンを使用してサーバーを設定する方法を示しています。 configureブロック内で、connectorを定義してホストとポートを指定し、さまざまなサーバーパラメータをカスタマイズしています。
connectors.add()メソッドは、指定されたホスト(127.0.0.1)とポート(8080)でコネクタを定義します。
これらのオプションに加えて、他のエンジン固有のプロパティを設定することもできます。
Jetty
Jetty固有のオプションは、 JettyApplicationEngineBase.Configuration クラスによって公開されています。
configureServer ブロック内でJettyサーバーを設定できます。これにより、 Server インスタンスにアクセスできます。
idleTimeoutプロパティを使用して、接続が閉じられるまでにアイドル状態を維持できる期間を指定します。
カスタム環境
以下の例は、 ApplicationEngine.Configuration クラスで表されるカスタム設定を使用して、複数のコネクタエンドポイントでサーバーを実行する方法を示しています。
完全な例については、 embedded-server-multiple-connectors を参照してください。
TIP
カスタム環境を使用して HTTPSを提供 することもできます。
コマンドライン設定
Ktorでは、コマンドライン引数を使用してembeddedServerを動的に設定できます。これは、ポート、ホスト、タイムアウトなどの設定を実行時に指定する必要がある場合に特に便利です。
これを実現するには、 CommandLineConfig クラスを使用してコマンドライン引数を設定オブジェクトにパースし、それを設定ブロック内で渡します。
この例では、Application.Configurationの takeFrom() 関数を使用して、portやhostなどのエンジン設定値を上書きしています。 loadCommonConfiguration() 関数は、タイムアウトなどのルート環境からの設定をロードします。
サーバーを実行するには、次のように引数を指定します。
TIP
静的な設定については、設定ファイルまたは環境変数を使用できます。 詳細については、 ファイルによる設定 を参照してください。