Created
April 13, 2011 18:53
-
-
Save oc/918136 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| :➜ curl http://localhost:8080/booking/bigip.status | |
| online | |
| active sessions: 0 | |
| ... Start 2 nettlesere mot appen (som bruker sessions) ... | |
| :➜ curl -X POST http://localhost:8080/booking/bigip.status\?secret\=ABCDEFG\&state\=offline | |
| offline | |
| active sessions: 2 | |
| :➜ curl http://localhost:8080/booking/bigip.status | |
| offline | |
| active sessions: 2 | |
| ➜ date | |
| Wed Apr 13 20:45:16 CEST 2011 | |
| ... vent 5 min ... | |
| ➜ date | |
| Wed Apr 13 20:51:21 CEST 2011 | |
| :➜ curl http://localhost:8080/booking/bigip.status | |
| offline | |
| active sessions: 0 | |
This file contains hidden or 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
| package bekkopen.servlet; | |
| import javax.servlet.Filter; | |
| import javax.servlet.FilterChain; | |
| import javax.servlet.FilterConfig; | |
| import javax.servlet.ServletException; | |
| import javax.servlet.ServletRequest; | |
| import javax.servlet.ServletResponse; | |
| import javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletResponse; | |
| import java.io.IOException; | |
| import java.io.PrintWriter; | |
| public class BigIPStatusHandlerFilter implements Filter { | |
| private final String secretToken = "ABCDEFG"; | |
| private boolean available = true; | |
| @Override | |
| public void init(FilterConfig filterConfig) throws ServletException {} | |
| @Override | |
| public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | |
| if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) { | |
| handle((HttpServletRequest) request, (HttpServletResponse) response); | |
| } | |
| // don't care about chain.doFilter() | |
| } | |
| private void handle(HttpServletRequest request, HttpServletResponse response) throws IOException { | |
| if ("POST".equals(request.getMethod()) && secretToken.equals(request.getParameter("secret"))) { | |
| available = !("offline".equals(request.getParameter("state"))); | |
| } | |
| response.setContentType("text/plain"); | |
| response.setStatus(available ? 200 : 226); | |
| PrintWriter out = response.getWriter(); | |
| out.println(available ? "online" : "offline"); | |
| out.println("active sessions: " + HttpSessionCountListener.numberOfSessions() ); | |
| out.close(); | |
| } | |
| @Override | |
| public void destroy() {} | |
| } |
This file contains hidden or 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
| package bekkopen.servlet; | |
| import javax.servlet.http.HttpSessionEvent; | |
| import javax.servlet.http.HttpSessionListener; | |
| public class HttpSessionCountListener implements HttpSessionListener { | |
| private static volatile int numberOfSessions; | |
| public void sessionCreated(HttpSessionEvent se) { | |
| synchronized (HttpSessionCountListener.class) { | |
| numberOfSessions++; | |
| } | |
| } | |
| public void sessionDestroyed(HttpSessionEvent se) { | |
| synchronized (HttpSessionCountListener.class) { | |
| numberOfSessions--; | |
| } | |
| } | |
| public static int numberOfSessions() { | |
| return numberOfSessions; | |
| } | |
| } |
This file contains hidden or 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
| <?xml version="1.0" encoding="UTF-8"?> | |
| <web-app xmlns="http://java.sun.com/xml/ns/javaee" | |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" | |
| metadata-complete="false" | |
| version="2.5"> | |
| <!-- ... --> | |
| <filter> | |
| <filter-name>BigIPStatusHandlerFilter</filter-name> | |
| <filter-class>bekkopen.servlet.BigIPStatusHandlerFilter</filter-class> | |
| </filter> | |
| <filter-mapping> | |
| <filter-name>BigIPStatusHandlerFilter</filter-name> | |
| <url-pattern>/bigip.status</url-pattern> | |
| </filter-mapping> | |
| <!-- ... --> | |
| <listener> | |
| <listener-class>bekkopen.servlet.HttpSessionCountListener</listener-class> | |
| </listener> | |
| <session-config> | |
| <session-timeout>5</session-timeout> | |
| </session-config> | |
| </web-app> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment