Class SessionAndTraceRegistrationFilter

java.lang.Object
kieker.monitoring.probe.servlet.SessionAndTraceRegistrationFilter
All Implemented Interfaces:
javax.servlet.Filter, IMonitoringProbe

public class SessionAndTraceRegistrationFilter
extends java.lang.Object
implements javax.servlet.Filter, IMonitoringProbe
For each incoming request via doFilter(ServletRequest, ServletResponse, FilterChain), this class (i) registers session and trace information into the thread-local data structures SessionRegistry and TraceRegistry accessible to other probes in the control-flow of this request, (ii) executes the given FilterChain and subsequently (iii) unregisters the thread-local data. If configured in the FilterConfig (see below), the execution of the doFilter(ServletRequest, ServletResponse, FilterChain) method is also part of the trace and logged to the IMonitoringController (note that this is the default behavior when no property is found). The filter can be integrated into the web.xml as follows:
 
 <filter>
   <filter-name>sessionAndTraceRegistrationFilter</filter-name>
   <filter-class>kieker.monitoring.probe.servlet.SessionAndTraceRegistrationFilter</filter-class>
 </filter>
 <filter-mapping>
   <filter-name>sessionAndTraceRegistrationFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 
Since:
1.5
Author:
Andre van Hoorn, Marco Luebcke, Jan Waller
  • Field Details

  • Constructor Details

    • SessionAndTraceRegistrationFilter

      public SessionAndTraceRegistrationFilter()
      Create an SessionAndTraceRegistrationFilter and initialize the filter operation signature.
    • SessionAndTraceRegistrationFilter

      public SessionAndTraceRegistrationFilter​(boolean logFilterExecution)
      Create an SessionAndTraceRegistrationFilter and initialize the filter operation signature.
      Parameters:
      logFilterExecution - true enables logging of the filter execution
  • Method Details

    • getFilterOperationSignatureString

      protected java.lang.String getFilterOperationSignatureString()
      Returns the operation signature of this filter's doFilter(ServletRequest, ServletResponse, FilterChain) operation to be used when logging executions of this operation. Extending classes may override this method in order to provide an alternative signature. However, note that this method is executed on each filter execution. Hence, you should return a final value here instead of executing expensive String operations.
      Returns:
      The operation signature as a string.
    • init

      public void init​(javax.servlet.FilterConfig config) throws javax.servlet.ServletException
      Specified by:
      init in interface javax.servlet.Filter
      Throws:
      javax.servlet.ServletException
    • doFilter

      public void doFilter​(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
      Register thread-local session and trace information, executes the given FilterChain and unregisters the session/trace information. If configured, the execution of this filter is also logged to the IMonitoringController. This method returns immediately if monitoring is not enabled.
      Specified by:
      doFilter in interface javax.servlet.Filter
      Parameters:
      request - The request.
      response - The response.
      chain - The filter chain to be used.
      Throws:
      java.io.IOException - on io errors
      javax.servlet.ServletException - on servlet errors
    • destroy

      public void destroy()
      Specified by:
      destroy in interface javax.servlet.Filter
    • registerSessionInformation

      protected java.lang.String registerSessionInformation​(javax.servlet.ServletRequest request)
      If the given ServletRequest is an instance of HttpServletRequest, this methods extracts the session ID and registers it in the SESSION_REGISTRY in order to be accessible for other probes in this thread. In case no session is associated with this request (or if the request is not an instance of HttpServletRequest), this method returns without any further actions and returns OperationExecutionRecord.NO_SESSION_ID.
      Parameters:
      request - The request.
      Returns:
      The session ID.