play可以作为一个独立的java程序运行,通过netty来对客户请求做出响应。
当让,play也支持在ap容器中运行。只要一个包裹类ServletWrapper就简单的实现了。
public class ServletWrapper extends HttpServlet implements ServletContextListener {
protected void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
Request request = null; try { Response response = new Response(); response.out = new ByteArrayOutputStream(); Response.current.set(response); request = parseRequest(httpServletRequest);boolean raw = Play.pluginCollection.rawInvocation(request, response);
if (raw) { copyResponse(Request.current(), Response.current(), httpServletRequest, httpServletResponse); } else { Invoker.invokeInThread(new ServletInvocation(request, response, httpServletRequest, httpServletResponse)); } } finally { Request.current.remove(); Response.current.remove(); Scope.Session.current.remove(); Scope.Params.current.remove(); Scope.Flash.current.remove(); Scope.RenderArgs.current.remove(); Scope.RouteArgs.current.remove(); CachedBoundActionMethodArgs.clear(); } }