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

Reply via email to