Skip to content

Instantly share code, notes, and snippets.

@karlkilden
Created February 4, 2015 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karlkilden/51233a012071a8f82c26 to your computer and use it in GitHub Desktop.
Save karlkilden/51233a012071a8f82c26 to your computer and use it in GitHub Desktop.
import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.Field;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.deltaspike.core.util.ExceptionUtils;
import org.omnifaces.filter.HttpFilter;
@WebFilter("/*")
public class ClusterFilter extends HttpFilter {
@Override
public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain arg3) throws ServletException,
IOException {
if (session != null) {
Object actualSession = null;
try {
Field sessionField = session.getClass().getDeclaredField("session");
boolean accessable = sessionField.isAccessible();
sessionField.setAccessible(true);
actualSession = sessionField.get(session);
sessionField.setAccessible(accessable);
} catch (Exception e) {
ExceptionUtils.throwAsRuntimeException(e);
}
byte[] data = SerializationUtils.serialize((Serializable) actualSession);
System.out.println("Session size " + data.length);
}
arg3.doFilter(request, response);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment