GUI -- Fixed a shut-down exception by explicitly closing all web-sockets on shutdown.
Change-Id: I3264a9029f36fdba150a3d729a2dd8c9024805d3
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
index f262202..4ccf9ea 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
@@ -35,15 +35,28 @@
private static final long PING_DELAY_MS = 5000;
+ private static UiWebSocketServlet instance;
+
private ServiceDirectory directory = new DefaultServiceDirectory();
private final Set<UiWebSocket> sockets = new HashSet<>();
private final Timer timer = new Timer();
private final TimerTask pruner = new Pruner();
+ /**
+ * Closes all currently open UI web-sockets.
+ */
+ public static void closeAll() {
+ if (instance != null) {
+ instance.sockets.forEach(UiWebSocket::close);
+ instance.sockets.clear();
+ }
+ }
+
@Override
public void init() throws ServletException {
super.init();
+ instance = this;
timer.schedule(pruner, PING_DELAY_MS, PING_DELAY_MS);
}