-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c49a814
commit eff47f8
Showing
37 changed files
with
2,276 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Manifest-Version: 1.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler | ||
|
||
############################################################ | ||
# Handler specific properties. | ||
# Describes specific configuration info for Handlers. | ||
############################################################ | ||
|
||
org.apache.juli.FileHandler.level = FINEST | ||
org.apache.juli.FileHandler.directory = ${catalina.base}/logs | ||
org.apache.juli.FileHandler.prefix = epics2web. | ||
|
||
java.util.logging.ConsoleHandler.level = FINEST | ||
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter | ||
|
||
org.jlab.level = FINEST |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package org.jlab.epics2web; | ||
|
||
import org.jlab.epics2web.websocket.WebSocketSessionManager; | ||
import org.jlab.epics2web.epics.ChannelMonitorManager; | ||
import org.jlab.epics2web.epics.ContextFactory; | ||
import com.cosylab.epics.caj.CAJContext; | ||
import gov.aps.jca.CAException; | ||
import java.util.concurrent.Executors; | ||
import java.util.concurrent.ScheduledExecutorService; | ||
import java.util.concurrent.TimeUnit; | ||
import java.util.logging.Level; | ||
import java.util.logging.Logger; | ||
import javax.servlet.ServletContextEvent; | ||
import javax.servlet.ServletContextListener; | ||
import javax.servlet.annotation.WebListener; | ||
|
||
/** | ||
* Main class that ties into application lifecycle; creates and destroys key resources. | ||
* | ||
* @author ryans | ||
*/ | ||
@WebListener | ||
public class Application implements ServletContextListener { | ||
|
||
public static ChannelMonitorManager channelManager = null; | ||
public static WebSocketSessionManager sessionManager = new WebSocketSessionManager(); | ||
|
||
private static final int EXECUTOR_POOL_SIZE = 2; | ||
private static final Logger LOGGER = Logger.getLogger(Application.class.getName()); | ||
private static ScheduledExecutorService executor = null; | ||
private static ContextFactory factory = null; | ||
private static CAJContext context = null; | ||
|
||
@Override | ||
public void contextInitialized(ServletContextEvent sce) { | ||
LOGGER.log(Level.INFO, ">>>>>>>>>>>>>>>>>>>>>>>>>> CONTEXT INITIALIZED"); | ||
|
||
factory = new ContextFactory(); | ||
try { | ||
context = factory.getContext(); | ||
} catch (Exception e) { | ||
LOGGER.log(Level.SEVERE, "Unable to obtain EPICS CA context", e); | ||
} | ||
executor = Executors.newScheduledThreadPool(EXECUTOR_POOL_SIZE); | ||
channelManager = new ChannelMonitorManager(context, executor); | ||
} | ||
|
||
@Override | ||
public void contextDestroyed(ServletContextEvent sce) { | ||
LOGGER.log(Level.INFO, ">>>>>>>>>>>>>>>>>>>>>>>>>> CONTEXT DESTROYED"); | ||
|
||
if (context != null && factory != null) { | ||
try { | ||
factory.returnContext(context); | ||
} catch (CAException e) { | ||
LOGGER.log(Level.WARNING, "Unable to return EPICS CA Context", e); | ||
} | ||
} | ||
|
||
if(factory != null) { | ||
factory.shutdown(); | ||
} | ||
|
||
if (executor != null) { | ||
executor.shutdown(); | ||
|
||
try { | ||
if (!executor.awaitTermination(5, TimeUnit.SECONDS)) { | ||
LOGGER.log(Level.WARNING, "Thread ExecutorService is not stopping..."); | ||
executor.shutdownNow(); | ||
} | ||
} catch (InterruptedException e) { | ||
LOGGER.log(Level.SEVERE, "Interrupted while waiting for threads to stop", e); | ||
} | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.jlab.epics2web.controller; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
/** | ||
* Controller for the Overview page. | ||
* | ||
* @author ryans | ||
*/ | ||
@WebServlet(name = "Overview", urlPatterns = {"/overview"}) | ||
public class Overview extends HttpServlet { | ||
|
||
/** | ||
* Handles the HTTP | ||
* <code>GET</code> method. | ||
* | ||
* @param request servlet request | ||
* @param response servlet response | ||
* @throws ServletException if a servlet-specific error occurs | ||
* @throws IOException if an I/O error occurs | ||
*/ | ||
@Override | ||
protected void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
|
||
request.getRequestDispatcher("/WEB-INF/views/overview.jsp").forward(request, response); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.jlab.epics2web.controller; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
/** | ||
* Controller for the Test page. | ||
* | ||
* @author ryans | ||
*/ | ||
@WebServlet(name = "Test", urlPatterns = {"/test"}) | ||
public class Test extends HttpServlet { | ||
|
||
/** | ||
* Handles the HTTP | ||
* <code>GET</code> method. | ||
* | ||
* @param request servlet request | ||
* @param response servlet response | ||
* @throws ServletException if a servlet-specific error occurs | ||
* @throws IOException if an I/O error occurs | ||
*/ | ||
@Override | ||
protected void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
|
||
request.getRequestDispatcher("/WEB-INF/views/test.jsp").forward(request, response); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package org.jlab.epics2web.controller; | ||
|
||
import java.io.IOException; | ||
import java.util.Map; | ||
import java.util.Set; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
import javax.websocket.Session; | ||
import org.jlab.epics2web.Application; | ||
import org.jlab.epics2web.websocket.WebSocketSessionManager; | ||
import org.jlab.epics2web.epics.ChannelMonitor; | ||
import org.jlab.epics2web.epics.ChannelMonitorManager; | ||
|
||
/** | ||
* Controller for the Console page. | ||
* | ||
* @author ryans | ||
*/ | ||
@WebServlet(name = "WebConsole", urlPatterns = {"/console"}) | ||
public class WebConsole extends HttpServlet { | ||
|
||
private final ChannelMonitorManager channelManager = Application.channelManager; | ||
private final WebSocketSessionManager sessionManager = Application.sessionManager; | ||
|
||
/** | ||
* Handles the HTTP | ||
* <code>GET</code> method. | ||
* | ||
* @param request servlet request | ||
* @param response servlet response | ||
* @throws ServletException if a servlet-specific error occurs | ||
* @throws IOException if an I/O error occurs | ||
*/ | ||
@Override | ||
protected void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
|
||
|
||
Map<String, ChannelMonitor> monitorMap = channelManager.getMonitorMap(); | ||
Map<Session, Set<String>> clientMap = sessionManager.getClientMap(); | ||
|
||
request.setAttribute("monitorMap", monitorMap); | ||
request.setAttribute("clientMap", clientMap); | ||
|
||
request.getRequestDispatcher("/WEB-INF/views/console.jsp").forward(request, response); | ||
} | ||
} |
Oops, something went wrong.