§Netty Server 後端
在 Play 2.6.x 之前,Play 使用 Netty Server 後端作為預設。在 2.6.x 中,預設後端已變更為 Pekko HTTP,但您仍可以在專案中手動選取 Netty 後端伺服器。
§使用
若要使用 Netty Server 後端,您首先需要停用 Pekko HTTP 伺服器,並將 Netty Server 外掛程式新增至您的專案
lazy val root = (project in file("."))
.enablePlugins(PlayScala, PlayNettyServer)
.disablePlugins(PlayPekkoHttpServer)
現在 Play 應該會自動選取 Netty Server 以在開發模式、生產環境和測試中執行。
§手動選取 Netty Server
如果出於某種原因,您的 classpath 中同時存在 Pekko HTTP 和 Netty Server JAR,則 Play 將無法預測性地選擇伺服器後端。您需要手動選取 Netty Server。這可透過明確覆寫 play.server.provider
設定選項並將其設定為 play.core.server.NettyServerProvider
的值來完成。
play.server.provider
設定值可以與其他設定選項以相同的方式設定。設定設定的各種方法說明在 設定檔文件 中。以下是啟用 Netty Server 的幾個範例。
建議的做法是將設定新增至兩個地方。首先,若要為 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 伺服器正在執行時,所有要求的 RequestAttrKey.Server
要求屬性值為 netty
。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 頁面。
下一步:部署您的應用程式
在此文件檔中發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件檔指引 後,請隨時提交拉取要求。有問題或建議要分享?請前往 我們的社群論壇 與社群展開對話。