Changeset 6124 for trunk

Show
Ignore:
Timestamp:
01/27/12 16:41:47 (4 months ago)
Author:
mtld
Message:

refactored session registration

Location:
trunk/pustefix-core/src/main/java/org/pustefixframework/http
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/pustefix-core/src/main/java/org/pustefixframework/http/AbstractPustefixRequestHandler.java

    r6078 r6124  
    2525import java.net.URL; 
    2626import java.nio.charset.Charset; 
     27import java.text.NumberFormat; 
     28import java.text.SimpleDateFormat; 
    2729import java.util.ArrayList; 
     30import java.util.Date; 
    2831import java.util.Enumeration; 
    2932import java.util.HashSet; 
     
    8790    public static final String REQUEST_ATTR_LANGUAGE = "__PFX_LANGUAGE__"; 
    8891    public static final String REQUEST_ATTR_PAGE_ALTERNATIVE = "__PFX_PAGE_ALTERNATIVE__"; 
     92     
     93    private int INC_ID = 0; 
     94    private String TIMESTAMP_ID = ""; 
    8995     
    9096    public static final Logger LOGGER_VISIT = Logger.getLogger("LOGGER_VISIT"); 
     
    379385    public boolean wantsCheckSessionIdValid() { 
    380386        return true; 
     387    } 
     388     
     389    public void registerSession(HttpServletRequest req, HttpSession session) { 
     390        if (session != null) { 
     391            synchronized (TIMESTAMP_ID) { 
     392                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
     393                String timestamp = sdf.format(new Date()); 
     394                NumberFormat nf = NumberFormat.getInstance(); 
     395                nf.setMinimumIntegerDigits(3); 
     396 
     397                if (timestamp.equals(TIMESTAMP_ID)) { 
     398                    INC_ID++; 
     399                } else { 
     400                    TIMESTAMP_ID = timestamp; 
     401                    INC_ID = 0; 
     402                } 
     403                if (INC_ID >= 1000) { 
     404                    LOG.warn("*** More than 999 connects/sec! ***"); 
     405                } 
     406                String sessid = session.getId(); 
     407                String mach = ""; 
     408                if (sessid.lastIndexOf(".") > 0) { 
     409                    mach = sessid.substring(sessid.lastIndexOf(".")); 
     410                } 
     411                session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach); 
     412            } 
     413            StringBuffer logbuff = new StringBuffer(); 
     414            logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|"); 
     415            logbuff.append(getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|"); 
     416            if (req.getHeader("referer") != null) { 
     417                logbuff.append(req.getHeader("referer")); 
     418            } 
     419            logbuff.append("|"); 
     420            if (req.getHeader("accept-language") != null) { 
     421                logbuff.append(req.getHeader("accept-language")); 
     422            } 
     423            LOGGER_VISIT.warn(logbuff.toString()); 
     424            getSessionAdmin().registerSession(session, getServerName(req), req.getRemoteAddr()); 
     425        } 
    381426    } 
    382427 
  • trunk/pustefix-core/src/main/java/org/pustefixframework/http/BotSessionTrackingStrategy.java

    r5849 r6124  
    22 
    33import java.io.IOException; 
    4 import java.text.NumberFormat; 
    5 import java.text.SimpleDateFormat; 
    6 import java.util.Date; 
    74 
    85import javax.servlet.ServletException; 
     
    107import javax.servlet.http.HttpServletResponse; 
    118import javax.servlet.http.HttpSession; 
    12  
    13 import org.apache.log4j.Logger; 
    149 
    1510import de.schlund.pfixxml.PfixServletRequest; 
     
    1914public class BotSessionTrackingStrategy implements SessionTrackingStrategy { 
    2015     
    21     private Logger LOG = Logger.getLogger(CookieSessionTrackingStrategy.class); 
    22      
    23     private int INC_ID = 0; 
    2416    private static final String STORED_REQUEST = "__STORED_PFIXSERVLETREQUEST__"; 
    25     private String TIMESTAMP_ID = ""; 
    26  
    27     public static final String VISIT_ID = "__VISIT_ID__"; 
    2817     
    2918    private SessionTrackingStrategyContext context; 
     
    5241        if(context.needsSession()) { 
    5342            session = req.getSession(true); 
    54             registerSession(req, session); 
     43            context.registerSession(req, session); 
    5544            session.setAttribute(STORED_REQUEST, preq); 
    5645            session.setAttribute(AbstractPustefixRequestHandler.SESSION_ATTR_COOKIE_SESSION, true); 
     
    6352    } 
    6453     
    65     private void registerSession(HttpServletRequest req, HttpSession session) { 
    66         if (session != null) { 
    67             synchronized (TIMESTAMP_ID) { 
    68                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
    69                 String timestamp = sdf.format(new Date()); 
    70                 NumberFormat nf = NumberFormat.getInstance(); 
    71                 nf.setMinimumIntegerDigits(3); 
    72  
    73                 if (timestamp.equals(TIMESTAMP_ID)) { 
    74                     INC_ID++; 
    75                 } else { 
    76                     TIMESTAMP_ID = timestamp; 
    77                     INC_ID = 0; 
    78                 } 
    79                 if (INC_ID >= 1000) { 
    80                     LOG.warn("*** More than 999 connects/sec! ***"); 
    81                 } 
    82                 String sessid = session.getId(); 
    83                 String mach = ""; 
    84                 if (sessid.lastIndexOf(".") > 0) { 
    85                     mach = sessid.substring(sessid.lastIndexOf(".")); 
    86                 } 
    87                 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach); 
    88             } 
    89             StringBuffer logbuff = new StringBuffer(); 
    90             logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|"); 
    91             logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|"); 
    92             if (req.getHeader("referer") != null) { 
    93                 logbuff.append(req.getHeader("referer")); 
    94             } 
    95             logbuff.append("|"); 
    96             if (req.getHeader("accept-language") != null) { 
    97                 logbuff.append(req.getHeader("accept-language")); 
    98             } 
    99             AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString()); 
    100             context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 
    101         } 
    102     } 
    103      
    10454} 
  • trunk/pustefix-core/src/main/java/org/pustefixframework/http/CookieSessionTrackingStrategy.java

    r6004 r6124  
    22 
    33import java.io.IOException; 
    4 import java.text.NumberFormat; 
    54import java.text.SimpleDateFormat; 
    65import java.util.Date; 
     
    3635    private static final String COOKIE_SESSION_RESET = "__PFIX_RST_"; 
    3736    private static final String COOKIE_SESSION_SSL = "__PFIX_SSL_"; 
    38     public static final String VISIT_ID = "__VISIT_ID__"; 
    39      
    40     private int INC_ID = 0; 
    41     private String TIMESTAMP_ID = ""; 
    4237     
    4338    private SessionTrackingStrategyContext context; 
     
    215210 
    216211        if(session != null) { 
    217             if(session.getAttribute(VISIT_ID) == null) { 
     212            if(session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID) == null) { 
    218213                StringBuilder sb = new StringBuilder(); 
    219214                sb.append("Found session without visit_id: "); 
     
    278273        LOGGER_SESSION.info("Get session I: " + session.getId()); 
    279274        if (!reuse_session) { 
    280             registerSession(req, session); 
     275            context.registerSession(req, session); 
    281276        } 
    282277 
     
    293288        HttpSession session = req.getSession(true); 
    294289        LOGGER_SESSION.info("Get session II: " + session.getId()); 
    295         registerSession(req, session); 
     290        context.registerSession(req, session); 
    296291        LOG.debug("===> Redirecting to URL with session (Id: " + session.getId() + ")"); 
    297292        session.setAttribute(STORED_REQUEST, preq); 
     
    304299        HttpSession session = req.getSession(true); 
    305300        LOGGER_SESSION.info("Get session III: " + session.getId()); 
    306         registerSession(req, session); 
     301        context.registerSession(req, session); 
    307302 
    308303        LOG.debug("===> Redirecting to URL with session (Id: " + session.getId() + ")"); 
     
    317312    private void redirectToSecureSSLSession(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) { 
    318313        HttpSession session = req.getSession(false); 
    319         String visit_id = (String) session.getAttribute(VISIT_ID); 
     314        String visit_id = (String) session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 
    320315         
    321316        LOG.debug("*** Saving session data..."); 
     
    347342        } else { 
    348343            // Register a new session now. 
    349             registerSession(req, session); 
     344            context.registerSession(req, session); 
    350345        } 
    351346        LOG.debug("*** Got new Session (Id: " + session.getId() + ")"); 
     
    361356        String redirect_uri = SessionHelper.encodeURL("https", AbstractPustefixRequestHandler.getServerName(req), req, context.getServletManagerConfig().getProperties()); 
    362357        AbstractPustefixRequestHandler.relocate(res, redirect_uri); 
    363     } 
    364      
    365     private void registerSession(HttpServletRequest req, HttpSession session) { 
    366         if (session != null) { 
    367             synchronized (TIMESTAMP_ID) { 
    368                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
    369                 String timestamp = sdf.format(new Date()); 
    370                 NumberFormat nf = NumberFormat.getInstance(); 
    371                 nf.setMinimumIntegerDigits(3); 
    372  
    373                 if (timestamp.equals(TIMESTAMP_ID)) { 
    374                     INC_ID++; 
    375                 } else { 
    376                     TIMESTAMP_ID = timestamp; 
    377                     INC_ID = 0; 
    378                 } 
    379                 if (INC_ID >= 1000) { 
    380                     LOG.warn("*** More than 999 connects/sec! ***"); 
    381                 } 
    382                 String sessid = session.getId(); 
    383                 String mach = ""; 
    384                 if (sessid.lastIndexOf(".") > 0) { 
    385                     mach = sessid.substring(sessid.lastIndexOf(".")); 
    386                 } 
    387                 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach); 
    388             } 
    389             StringBuffer logbuff = new StringBuffer(); 
    390             logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|"); 
    391             logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|"); 
    392             if (req.getHeader("referer") != null) { 
    393                 logbuff.append(req.getHeader("referer")); 
    394             } 
    395             logbuff.append("|"); 
    396             if (req.getHeader("accept-language") != null) { 
    397                 logbuff.append(req.getHeader("accept-language")); 
    398             } 
    399             AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString()); 
    400             context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 
    401         } 
    402358    } 
    403359         
     
    425381        String parentid = req.getRequestedSessionId(); 
    426382        HttpSession child = context.getSessionAdmin().getChildSessionForParentId(parentid); 
    427         String curr_visit_id = (String) child.getAttribute(VISIT_ID); 
     383        String curr_visit_id = (String) child.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 
    428384        HttpSession session = req.getSession(true); 
    429385        LOGGER_SESSION.info("Get session VI: " + session.getId()); 
    430386 
    431387        LinkedList<TrailElement> traillog = context.getSessionAdmin().getInfo(child).getTraillog(); 
    432         session.setAttribute(VISIT_ID, curr_visit_id); 
     388        session.setAttribute(AbstractPustefixRequestHandler.VISIT_ID, curr_visit_id); 
    433389        context.getSessionAdmin().registerSession(session, traillog, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 
    434390        LOG.debug("===> Redirecting with session (Id: " + session.getId() + ") using OLD VISIT_ID: " + curr_visit_id); 
  • trunk/pustefix-core/src/main/java/org/pustefixframework/http/SessionTrackingStrategyContext.java

    r5849 r6124  
    66import javax.servlet.http.HttpServletRequest; 
    77import javax.servlet.http.HttpServletResponse; 
     8import javax.servlet.http.HttpSession; 
    89 
    910import org.pustefixframework.config.contextxmlservice.ServletManagerConfig; 
     
    2223    public void callProcess(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException; 
    2324    public SessionAdmin getSessionAdmin(); 
     25    public void registerSession(HttpServletRequest req, HttpSession session); 
    2426     
    2527} 
  • trunk/pustefix-core/src/main/java/org/pustefixframework/http/URLRewriteSessionTrackingStrategy.java

    r6033 r6124  
    22 
    33import java.io.IOException; 
    4 import java.text.NumberFormat; 
    5 import java.text.SimpleDateFormat; 
    6 import java.util.Date; 
    74import java.util.Enumeration; 
    85import java.util.HashMap; 
     
    4643    private static final String STORED_REQUEST = "__STORED_PFIXSERVLETREQUEST__"; 
    4744    private static final String TEST_COOKIE = "__PFIX_TST_"; 
    48     public static final String VISIT_ID = "__VISIT_ID__"; 
    49      
    50     private int INC_ID = 0; 
    51     private String TIMESTAMP_ID = ""; 
     45     
    5246    private SessionTrackingStrategyContext context; 
    5347     
     
    396390        HttpSession session = req.getSession(true); 
    397391        storeClientIdentity(req); 
    398         registerSession(req, session); 
     392        context.registerSession(req, session); 
    399393 
    400394        LOG.debug("*** Setting INSECURE flag in session (Id: " + session.getId() + ")"); 
     
    412406        HttpSession session = req.getSession(true); 
    413407        storeClientIdentity(req); 
    414         registerSession(req, session); 
     408        context.registerSession(req, session); 
    415409        createTestCookie(req, res); 
    416410 
     
    423417    private void redirectToSecureSSLSession(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) { 
    424418        HttpSession session = req.getSession(false); 
    425         String visit_id = (String) session.getAttribute(VISIT_ID); 
     419        String visit_id = (String) session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 
    426420        String parentid = (String) session.getAttribute(CHECK_FOR_RUNNING_SSL_SESSION); 
    427421        if (parentid != null && !parentid.equals("")) { 
     
    485479        } else { 
    486480            // Register a new session now. 
    487             registerSession(req, session); 
     481            context.registerSession(req, session); 
    488482        } 
    489483        LOG.debug("*** Got new Session (Id: " + session.getId() + ")"); 
     
    521515        String redirect_uri = SessionHelper.encodeURL("https", AbstractPustefixRequestHandler.getServerName(req), req, context.getServletManagerConfig().getProperties()); 
    522516        AbstractPustefixRequestHandler.relocate(res, redirect_uri); 
    523     } 
    524      
    525     private void registerSession(HttpServletRequest req, HttpSession session) { 
    526         if (session != null) { 
    527             synchronized (TIMESTAMP_ID) { 
    528                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
    529                 String timestamp = sdf.format(new Date()); 
    530                 NumberFormat nf = NumberFormat.getInstance(); 
    531                 nf.setMinimumIntegerDigits(3); 
    532  
    533                 if (timestamp.equals(TIMESTAMP_ID)) { 
    534                     INC_ID++; 
    535                 } else { 
    536                     TIMESTAMP_ID = timestamp; 
    537                     INC_ID = 0; 
    538                 } 
    539                 if (INC_ID >= 1000) { 
    540                     LOG.warn("*** More than 999 connects/sec! ***"); 
    541                 } 
    542                 String sessid = session.getId(); 
    543                 String mach = ""; 
    544                 if (sessid.lastIndexOf(".") > 0) { 
    545                     mach = sessid.substring(sessid.lastIndexOf(".")); 
    546                 } 
    547                 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach); 
    548             } 
    549             StringBuffer logbuff = new StringBuffer(); 
    550             logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|"); 
    551             logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|"); 
    552             if (req.getHeader("referer") != null) { 
    553                 logbuff.append(req.getHeader("referer")); 
    554             } 
    555             logbuff.append("|"); 
    556             if (req.getHeader("accept-language") != null) { 
    557                 logbuff.append(req.getHeader("accept-language")); 
    558             } 
    559             AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString()); 
    560             context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 
    561         } 
    562517    } 
    563518     
     
    669624        String parentid = req.getRequestedSessionId(); 
    670625        HttpSession child = context.getSessionAdmin().getChildSessionForParentId(parentid); 
    671         String curr_visit_id = (String) child.getAttribute(VISIT_ID); 
     626        String curr_visit_id = (String) child.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 
    672627        HttpSession session = req.getSession(true); 
    673628        storeClientIdentity(req); 
     
    681636 
    682637        LinkedList<TrailElement> traillog = context.getSessionAdmin().getInfo(child).getTraillog(); 
    683         session.setAttribute(VISIT_ID, curr_visit_id); 
     638        session.setAttribute(AbstractPustefixRequestHandler.VISIT_ID, curr_visit_id); 
    684639        context.getSessionAdmin().registerSession(session, traillog, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 
    685640        LOG.debug("===> Redirecting with session (Id: " + session.getId() + ") using OLD VISIT_ID: " + curr_visit_id);