docs: public void init(FilterConfig config) throws ServletException {
  		String portsString = config.getInitParameter("ports");
  		if (portsString == null){
  			throw new ServletException("the ports parameter must be defined");
  		}
  		String[] portsArray = portsString.split("[, ]");
  		if (portsArray.length == 0){
  			throw new ServletException("the ports parameter must contains comma separated port numbers: " + portsString);
  		}
  		ports = new int[portsArray.length];
  		for (int i = 0; i < portsArray.length; i ++){
  			String pStr = portsArray[i];
  			if (!StringUtils.isNumeric(pStr)){
  				throw new ServletException("the port number is not valid: " + pStr);
  			}
  			try{
  				ports[i] = Integer.parseInt(pStr);
  			}catch(NumberFormatException e){
  				throw new ServletException("the port number is not valid: " + pStr);
  			}
  		}
  
  		String modeString = config.getInitParameter("mode");
  		if (StringUtils.isBlank(modeString)){
  			throw new ServletException("the mode parameter must be defined");
  		}
  		modeString = modeString.trim();
  		if ("allow".equalsIgnoreCase(modeString)){
  			mode = MODE_ALLOW;
  		}else if ("deny".equalsIgnoreCase(modeString)){
  			mode = MODE_DENY;
  		}else{
  			throw new ServletException("the mode parameter must be either 'allow' or 'deny' : " + modeString);
  		}
  		
  		String statusCodeString = config.getInitParameter("statusCode");
  		if (!StringUtils.isNumeric(statusCodeString)){
  			throw new ServletException("the statusCode parameter must be a valid number: " + statusCodeString);
  		}
  		try{
  			statusCode = Integer.parseInt(statusCodeString);
  		}catch(NumberFormatException e){
  			throw new ServletException("the statusCode parameter must be a valid number: " + statusCodeString);
  		}
  		
  		message = config.getInitParameter("message");
  	}