It isn't working. Add some debug logging.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 6 Feb 2011 20:30:38 +0000 (20:30 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 6 Feb 2011 20:30:38 +0000 (20:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1067747 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/valves/CrawlerSessionManagerValve.java

index e4fc4b5..6af847d 100644 (file)
@@ -31,6 +31,8 @@ import javax.servlet.http.HttpSession;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 
 /**
  * Web crawlers can trigger the creation of many thousands of sessions as they
@@ -41,6 +43,9 @@ import org.apache.catalina.connector.Response;
  */
 public class CrawlerSessionManagerValve extends ValveBase {
 
+    private static final Log log =
+        LogFactory.getLog(CrawlerSessionManagerValve.class);
+
     private Map<String,SessionInfo> uaIpSessionInfo =
         new ConcurrentHashMap<String, SessionInfo>();
 
@@ -110,6 +115,12 @@ public class CrawlerSessionManagerValve extends ValveBase {
         SessionInfo sessionInfo = null;
         String clientIp = null;
 
+        if (log.isDebugEnabled()) {
+            log.debug(request.hashCode() + ": ClientIp=" +
+                    request.getRemoteAddr() + ", RequestedSessionId=" +
+                    request.getRequestedSessionId());
+        }
+
         // If the incoming request has a session ID, no action is required
         if (request.getRequestedSessionId() == null) {
 
@@ -117,10 +128,21 @@ public class CrawlerSessionManagerValve extends ValveBase {
             Enumeration<String> uaHeaders = request.getHeaders("user-agent");
             while (!isBot && uaMatcher != null &&
                     uaHeaders.hasMoreElements()) {
+                
                 String uaHeader = uaHeaders.nextElement();
                 uaMatcher.reset(uaHeader);
+                
+                if (log.isDebugEnabled()) {
+                    log.debug(request.hashCode() + ": UserAgent=" + uaHeader);
+                }
+                
                 if (uaMatcher.matches()) {
                     isBot = true;
+                    
+                    if (log.isDebugEnabled()) {
+                        log.debug(request.hashCode() +
+                                ": Bot found. UserAgent=" + uaHeader);
+                    }
                 }
             }
             
@@ -130,6 +152,11 @@ public class CrawlerSessionManagerValve extends ValveBase {
                 sessionInfo = uaIpSessionInfo.get(clientIp);
                 if (sessionInfo != null) {
                     request.setRequestedSessionId(sessionInfo.getSessionId());
+
+                    if (log.isDebugEnabled()) {
+                        log.debug(request.hashCode() +
+                                ": SessionID=" + sessionInfo.getSessionId());
+                    }
                 }
             }
         }
@@ -143,9 +170,20 @@ public class CrawlerSessionManagerValve extends ValveBase {
                 if (s != null) {
                     uaIpSessionInfo.put(clientIp, new SessionInfo(s.getId()));
                     s.setMaxInactiveInterval(sessionInactiveInterval);
+
+                    if (log.isDebugEnabled()) {
+                        log.debug(request.hashCode() +
+                                ": New bot session. SessionID=" + s.getId());
+                    }
                 }
             } else {
                 sessionInfo.access();
+
+                if (log.isDebugEnabled()) {
+                    log.debug(request.hashCode() +
+                            ": Bot session accessed. SessionID=" +
+                            sessionInfo.getSessionId());
+                }
             }
         }
     }