Commits
Tarun Sukhani authored ff4373df8be
refactor: remove ServletWrapper, WAR command, and jakarta.servlet dependency (PF-78) Drop the legacy servlet-container deployment path entirely. The marquee features of this fork — HTTP/2 ALPN (PF-58), HTTP/3 over QUIC (PF-57), virtual-thread dispatch via VirtualThreadScheduledExecutor — are Netty-exclusive by design and don't function inside a servlet container, so WAR-deployed apps were running a degraded fork. Every behavior change also had to be implemented twice (PF-62 explicitly cites "aligning the two transports", and PF-5 paid the same tax for security headers). Removed - framework/src/play/server/ServletWrapper.java (~530 lines) - framework/test-src/play/server/ServletWrapperTest.java + HttpServletStub - framework/pym/play/commands/war.py (the play war CLI) - package_as_war(...) + the unused zipfile import in framework/pym/play/utils.py - resources/war/web.xml (the WAR template) - documentation/commands/cmd-war.txt (the play help war text) - jakarta.servlet -> jakarta.servlet-api 6.0.0 in dependencies.yml + the corresponding framework/lib/jakarta.servlet-api-6.0.0.jar (pruned via ant resolve -Dprune=true) Now-dead PF-5 servlet integration also removed - SecurityHeadersPolicy.applyTo(HttpServletResponse, boolean) overload + jakarta.servlet import + class JavaDoc reference - SecurityHeadersPlugin class JavaDoc no longer mentions ServletWrapper - SecurityHeadersPolicyTest's two servlet test cases (servletApplyAddsHeaders, servletExistingHeaderNotOverwritten) and their Mockito imports JavaDoc cleanup - ErrorBindings: drop the @link ServletWrapper#serve500 / serve404 reference; helper now applies only to PlayHandler error pages - ApacheMultipartParser: drop the cosmetic javax.servlet.HttpServletRequest reference in the Apache Commons FileUpload citation - PlayHandler PF-62 cookie comment no longer references ServletWrapper Doc + skel updates - README "Removed: WAR / servlet-container deployment" section explains the migration path (run via Netty, front with reverse proxy) - application-skel/conf/application.conf rewords the http.path comment to reference reverse-proxy path-prefix rewriting instead of WAR mode Breaking change This is a SemVer-major removal for users who deployed via play war. Affected users must switch to the embedded Netty path (play run / play start) and front it with a reverse proxy if they need a container — which is what most Play 1 deployments already do. The Request.current().args.get(ServletWrapper.SERVLET_REQ) escape-hatch is also gone; that integration was only ever populated in the WAR path, so the same population is impacted. Net diff: -1291 lines across 18 files. Full unit + integration test suites green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>