ドキュメント

§Nettyサーバーバックエンド

Play 2.6.xより前は、PlayはデフォルトでNettyサーバーバックエンドを使用していました。2.6.xでは、デフォルトのバックエンドがPekko HTTPに変更されましたが、プロジェクトでNettyバックエンドサーバーを手動で選択できます。

§使用方法

Nettyサーバーバックエンドを使用するには、まずPekko HTTPサーバーを無効にし、Nettyサーバープラグインをプロジェクトに追加する必要があります

lazy val root = (project in file("."))
  .enablePlugins(PlayScala, PlayNettyServer)
  .disablePlugins(PlayPekkoHttpServer)

これで、Playは開発モード、本番、テストの実行にNettyサーバーを自動的に選択するはずです。

§Nettyサーバーの手動選択

何らかの理由でPekko HTTPとNettyサーバーの両方のJARがクラスパスにある場合、Playはサーバーバックエンドを予測どおりに選択できません。Nettyサーバーを手動で選択する必要があります。これは、`play.server.provider`設定オプションを明示的にオーバーライドし、`play.core.server.NettyServerProvider`の値に設定することで実行できます。

`play.server.provider`設定は、他の設定オプションと同じ方法で設定できます。設定を設定するさまざまな方法は、設定ファイルのドキュメントに記載されています。Nettyサーバーを有効にするいくつかの例を以下に示します。

推奨される方法は、2か所に設定を追加することです。まず、sbt `run`タスクでNettyを有効にするには、`build.sbt`に以下を追加します

PlayKeys.devSettings += "play.server.provider" -> "play.core.server.NettyServerProvider"

次に、アプリケーションをデプロイする場合、またはsbt `start`タスクを使用する場合にNettyバックエンドを有効にするには、`application.conf`ファイルに以下を追加します

play.server.provider = play.core.server.NettyServerProvider

`build.sbt`と`application.conf`の両方に設定を追加することで、Nettyバックエンドがすべての場合に使用されるようにすることができます。

§Nettyサーバーが実行されていることを確認する

Nettyサーバーが実行されている場合、値`netty`を持つリクエスト属性`RequestAttrKey.Server`がすべてのリクエストに設定されます。Pekko HTTPバックエンドはこのリクエスト属性の値を設定しません。

Scala
import play.api.mvc.request.RequestAttrKey

class SomeScalaController @Inject() (cc: ControllerComponents) extends AbstractController(cc) {
  def index: Action[AnyContent] = Action { request =>
    assert(request.attrs.get(RequestAttrKey.Server) == Option("netty"))
    // ...
  }
}
Java
import play.api.mvc.request.RequestAttrKey;

public class SomeJavaController extends Controller {

  public Result index(Http.Request request) {
    assert (request
        .attrs()
        .getOptional(RequestAttrKey.Server().asJava())
        .equals(Optional.of("netty")));
    // ...
  }
}

§Nettyの設定

SettingsNettyページを参照してください。

次: アプリケーションのデプロイ


このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインをお読みいただいた後、プルリクエストを送信してください。質問やアドバイスがありましたら、コミュニティフォーラムにアクセスして、コミュニティとの会話を始めてください。