001 package com.bekk.boss.pluto.embedded.jetty.util; 002 003 import org.mortbay.jetty.servlet.AbstractSessionManager; 004 import org.mortbay.jetty.servlet.HashSessionManager; 005 006 import javax.servlet.http.Cookie; 007 import javax.servlet.http.HttpSession; 008 import java.lang.reflect.Field; 009 010 /** 011 * @author Nils-Helge Garli 012 */ 013 public class PlutoJettySessionManager extends HashSessionManager { 014 015 public Cookie access(HttpSession session, boolean secure) { 016 if (session instanceof AbstractSessionManager.Session) { 017 return super.access(session, secure); 018 } else { 019 try { 020 Field sessionField = session.getClass().getDeclaredField( 021 "httpSession"); 022 sessionField.setAccessible(true); 023 HttpSession sess = (HttpSession) sessionField.get(session); 024 return super.access(sess, secure); 025 } catch (Exception e) { 026 throw new RuntimeException(e.getMessage(), e); 027 } 028 } 029 } 030 031 /** 032 * @author Lee Butts 033 */ 034 public void complete(HttpSession session) { 035 if (session instanceof AbstractSessionManager.Session) { 036 super.complete(session); 037 } 038 } 039 }