Author: markt Date: Fri Apr 19 20:09:44 2013 New Revision: 1470016 URL: http://svn.apache.org/r1470016 Log: Set ServletContext attribute to expose the ServerContainer. Refactor the ServerContainer bootstrap.
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsListener.java tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsListener.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsListener.java?rev=1470016&r1=1470015&r2=1470016&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsListener.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsListener.java Fri Apr 19 20:09:44 2013 @@ -20,17 +20,17 @@ import javax.servlet.ServletContextEvent import javax.servlet.ServletContextListener; /** - * This will be added automatically to a {@link javax.servlet.ServletContext} by - * the {@link WsSci}. If the {@link WsSci} is disabled, this listener must be - * added manually to every {@link javax.servlet.ServletContext} that uses - * WebSocket. + * In normal usage, this {@link ServletContextListener} is not required as the + * {@link WsSci} performs all the necessary bootstrap. If the {@link WsSci} is + * disabled, this listener must be added manually to every + * {@link javax.servlet.ServletContext} that uses WebSocket to bootstrap the + * {@link WsServerContainer} correctly. */ public class WsListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { - WsServerContainer sc = WsServerContainer.getServerContainer(); - sc.setServletContext(sce.getServletContext()); + WsSci.init(sce.getServletContext()); } @Override Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java?rev=1470016&r1=1470015&r2=1470016&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Fri Apr 19 20:09:44 2013 @@ -40,11 +40,15 @@ import javax.websocket.server.ServerEndp Endpoint.class}) public class WsSci implements ServletContainerInitializer { + private static final String SERVER_CONTAINER_CONTEXT_ATTRIBUTE = + "javax.websocket.server.ServerContainer"; + + @Override public void onStartup(Set<Class<?>> clazzes, ServletContext ctx) throws ServletException { - ctx.addListener(WsListener.class); + WsServerContainer sc = init(ctx); if (clazzes == null || clazzes.size() == 0) { return; @@ -110,8 +114,6 @@ public class WsSci implements ServletCon } } - WsServerContainer sc = WsServerContainer.getServerContainer(); - sc.setServletContext(ctx); try { // Deploy endpoints for (ServerEndpointConfig config : filteredEndpointConfigs) { @@ -125,4 +127,14 @@ public class WsSci implements ServletCon throw new ServletException(e); } } + + + static WsServerContainer init(ServletContext servletContext) { + WsServerContainer sc = WsServerContainer.getServerContainer(); + sc.setServletContext(servletContext); + + servletContext.setAttribute(SERVER_CONTAINER_CONTEXT_ATTRIBUTE, sc); + + return sc; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org