code: @Override
      public void init(final FilterConfig _filterConfig)
          throws ServletException
      {
          super.init(_filterConfig);
          final String root = "/" + _filterConfig.getServletContext().getServletContextName() + "/";
  
          this.notLoggedInForward = "/" + _filterConfig.getInitParameter(TransactionFilter.INIT_PARAM_URL_LOGIN_PAGE);
  
          if (this.notLoggedInForward == null || this.notLoggedInForward.length() == 0) {
              throw new ServletException("Init parameter " + "'" + TransactionFilter.INIT_PARAM_URL_LOGIN_PAGE
                                          + "' not defined");
          }
  
          this.exludeUris.add((root + this.notLoggedInForward).replaceAll("//+", "/"));
          this.exludeUris.add((root + "/servlet/login").replaceAll("//+", "/"));
  
          final ServiceLoader<ILoginProvider> serviceLoaderLogins = ServiceLoader.load(ILoginProvider.class);
          for (final ILoginProvider loginProvider : serviceLoaderLogins) {
              LOG.info("[TransactionFilter] registered: {}", loginProvider);
              this.loginProviders .add(loginProvider);
          }
      }
docs: Called by the web container to indicate to a filter that it is being
  placed into service. The servlet container calls the init method exactly
  once after instantiating the filter. The init method must complete
  successfully before the filter is asked to do any filtering work. The web
  container cannot place the filter into service if the init method either
  
  <ol>
  <li>Throws a ServletException</li>
  <li>Does not return within a time period defined by the web container</li>
  </ol>
  @param _filterConfig filterconfig
  @throws ServletException on error