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 クラスによって公開されます。

Jettyサーバーは configureServer ブロック内で設定でき、そこから 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

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