Author: jaz
Date: Tue Sep 11 15:09:40 2007 New Revision: 574709 URL: http://svn.apache.org/viewvc?rev=574709&view=rev Log: added code to disable ServiceHit and Visit tracking for defined requests (use new track-stats and track-visit attributes on the request URI); also supports disabling tracking per webapp (use init param track-stats and track-visit) Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/dtd/site-conf.xsd?rev=574709&r1=574708&r2=574709&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/dtd/site-conf.xsd (original) +++ ofbiz/trunk/framework/webapp/dtd/site-conf.xsd Tue Sep 11 15:09:40 2007 @@ -138,6 +138,22 @@ </xs:restriction> </xs:simpleType> </xs:attribute> + <xs:attribute name="track-visit" default="true"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true"/> + <xs:enumeration value="false"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="track-stats" default="true"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true"/> + <xs:enumeration value="false"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> </xs:attributeGroup> <xs:element name="security"> <xs:complexType> Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java?rev=574709&r1=574708&r2=574709&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java Tue Sep 11 15:09:40 2007 @@ -99,6 +99,8 @@ public static final String REQUEST_MAPPING = "request-map"; public static final String REQUEST_URI = "uri"; public static final String REQUEST_EDIT = "edit"; + public static final String REQUEST_TRACK_STATS = "track-stats"; + public static final String REQUEST_TRACK_VISIT = "track-visit"; public static final String REQUEST_DESCRIPTION = "description"; public static final String ERROR_PAGE = "error"; @@ -195,12 +197,16 @@ // Get the URI info. String uri = requestMapElement.getAttribute(REQUEST_URI); String edit = requestMapElement.getAttribute(REQUEST_EDIT); + String stats = requestMapElement.getAttribute(REQUEST_TRACK_STATS); + String visit = requestMapElement.getAttribute(REQUEST_TRACK_VISIT); if (edit == null || edit.equals("")) edit = "true"; if (uri != null) { uriMap.put(REQUEST_URI, uri); uriMap.put(REQUEST_EDIT, edit); + uriMap.put(REQUEST_TRACK_STATS, stats); + uriMap.put(REQUEST_TRACK_VISIT, visit); } // Check for security. Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=574709&r1=574708&r2=574709&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java Tue Sep 11 15:09:40 2007 @@ -281,7 +281,11 @@ try { UtilHttp.setInitialRequestInfo(request); VisitHandler.getVisitor(request, response); - ServerHitBin.countRequest(webappName + "." + rname, request, requestStartTime, System.currentTimeMillis() - requestStartTime, userLogin, delegator); + if (requestHandler.trackStats(request)) { + ServerHitBin.countRequest(webappName + "." + rname, request, requestStartTime, System.currentTimeMillis() - requestStartTime, userLogin, delegator); + } else { + Debug.log("Track status is disabled for this request"); + } } catch (Throwable t) { Debug.logError(t, "Error in ControlServlet saving ServerHit/Bin information; the output was successful, but can't save this tracking information. The error was: " + t.toString(), module); } Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=574709&r1=574708&r2=574709&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Tue Sep 11 15:09:40 2007 @@ -176,13 +176,13 @@ } // If its the first visit run the first visit events. - if (session.getAttribute("visit") == null) { + if (this.trackVisit(request) && session.getAttribute("visit") == null) { Debug.logInfo("This is the first request in this visit." + " sessionId=" + UtilHttp.getSessionId(request), module); // This isn't an event because it is required to run. We do not want to make it optional. - VisitHandler.getVisit(session); + GenericValue visit = VisitHandler.getVisit(session); Collection events = requestManager.getFirstVisitEvents(); - if (events != null) { + if (visit != null && events != null) { Iterator i = events.iterator(); while (i.hasNext()) { @@ -203,6 +203,8 @@ } } } + } else { + Debug.log("Track visit is disabled for this request"); } // Invoke the pre-processor (but NOT in a chain) @@ -277,8 +279,9 @@ eventReturnString = this.runEvent(request, response, eventType, eventPath, eventMethod); // save the server hit - ServerHitBin.countEvent(cname + "." + eventMethod, request, eventStartTime, - System.currentTimeMillis() - eventStartTime, userLogin, delegator); + if (this.trackStats(request)) + ServerHitBin.countEvent(cname + "." + eventMethod, request, eventStartTime, + System.currentTimeMillis() - eventStartTime, userLogin, delegator); // set the default event return if (eventReturnString == null) { @@ -352,7 +355,6 @@ // special case to avoid login/logout looping: if request was "logout" before the login, change to null for default success view; do the same for "login" to avoid going back to the same page if ("logout".equals(previousRequest) || "/logout".equals(previousRequest) || "login".equals(previousRequest) || "/login".equals(previousRequest) || "checkLogin".equals(previousRequest) || "/checkLogin".equals(previousRequest)) { Debug.logWarning("Found special _PREVIOUS_REQUEST_ of [" + previousRequest + "], setting to null to avoid problems, not running request again", module); - previousRequest = null; } else { if (Debug.infoOn()) Debug.logInfo("[Doing Previous Request]: " + previousRequest + " sessionId=" + UtilHttp.getSessionId(request), module); doRequest(request, response, previousRequest, userLogin, delegator); @@ -654,7 +656,7 @@ String vname = (String) req.getAttribute("_CURRENT_VIEW_"); - if (vname != null) { + if (this.trackStats(req) && vname != null) { ServerHitBin.countView(cname + "." + vname, req, viewStartTime, System.currentTimeMillis() - viewStartTime, userLogin, delegator); } @@ -748,7 +750,7 @@ httpServer = UtilProperties.getPropertyValue("url.properties", "force.http.host"); } if (enableHttps == null) { - enableHttps = Boolean.valueOf(UtilProperties.propertyValueEqualsIgnoreCase("url.properties", "port.https.enabled", "Y")); + enableHttps = UtilProperties.propertyValueEqualsIgnoreCase("url.properties", "port.https.enabled", "Y"); } // create the path the the control servlet @@ -757,11 +759,10 @@ String requestUri = RequestHandler.getRequestUri(url); StringBuffer newURL = new StringBuffer(); - boolean useHttps = enableHttps.booleanValue(); boolean didFullSecure = false; boolean didFullStandard = false; - if (useHttps || fullPath || secure) { - if (secure || (useHttps && requestManager.requiresHttps(requestUri) && !request.isSecure())) { + if (enableHttps || fullPath || secure) { + if (secure || (enableHttps && requestManager.requiresHttps(requestUri) && !request.isSecure())) { String server = httpsServer; if (server == null || server.length() == 0) { server = request.getServerName(); @@ -774,7 +775,7 @@ } didFullSecure = true; - } else if (fullPath || (useHttps && !requestManager.requiresHttps(requestUri) && request.isSecure())) { + } else if (fullPath || (enableHttps && !requestManager.requiresHttps(requestUri) && request.isSecure())) { String server = httpServer; if (server == null || server.length() == 0) { server = request.getServerName(); @@ -895,6 +896,26 @@ Debug.logError(e, module); } } + } + } + + public boolean trackStats(HttpServletRequest request) { + String appStats = context.getInitParameter("track-stats"); + if (appStats != null && !"false".equalsIgnoreCase(appStats)) { + String uriString = RequestHandler.getRequestUri(request.getPathInfo()); + return !"false".equalsIgnoreCase(requestManager.getRequestAttribute(uriString, ConfigXMLReader.REQUEST_TRACK_STATS)); + } else { + return false; + } + } + + public boolean trackVisit(HttpServletRequest request) { + String appVisit = context.getInitParameter("track-visit"); + if (appVisit != null && !"false".equalsIgnoreCase(appVisit)) { + String uriString = RequestHandler.getRequestUri(request.getPathInfo()); + return !"false".equalsIgnoreCase(requestManager.getRequestAttribute(uriString, ConfigXMLReader.REQUEST_TRACK_VISIT)); + } else { + return false; } } } |
Free forum by Nabble | Edit this page |