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: [email protected]
For additional commands, e-mail: [email protected]