コードでの設定
Ktorでは、ホストアドレス、ポート、
embeddedServer
または EngineMain
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
クラスによって公開されます。
Jettyサーバーは configureServer
ブロック内で設定でき、そこから Server
インスタンスにアクセスできます。
idleTimeout
プロパティを使用して、コネクションが閉じられる前にアイドル状態になり得る時間の長さを指定します。
カスタム環境
以下の例は、 ApplicationEngine.Configuration
クラスで表現されるカスタム設定を使用して、複数のコネクタエンドポイントを持つサーバーを実行する方法を示しています。
完全な例については、 embedded-server-multiple-connectors
を参照してください。
TIP
カスタム環境を使用して HTTPSを提供する こともできます。
コマンドライン設定
Ktorでは、コマンドライン引数を使用してembeddedServer
を動的に設定できます。これは、ポート、ホスト、タイムアウトなどの設定を実行時に指定する必要がある場合に特に役立ちます。
これを実現するには、 CommandLineConfig
クラスを使用してコマンドライン引数を設定オブジェクトにパースし、設定ブロック内で渡します。
この例では、Application.Configuration
の takeFrom()
関数が、port
やhost
などのエンジン設定値を上書きするために使用されます。 loadCommonConfiguration()
関数は、タイムアウトなど、ルート環境から設定をロードします。
サーバーを実行するには、次のように引数を指定します。
TIP
静的な設定には、設定ファイルまたは環境変数を使用できます。 詳細については、 ファイルでの設定 を参照してください。