jp.terasoluna.fw.web.thin
Class ServerBlockageControlFilter

java.lang.Object
  extended by jp.terasoluna.fw.web.thin.AbstractControlFilter<ServerBlockageController>
      extended by jp.terasoluna.fw.web.thin.ServerBlockageControlFilter
All Implemented Interfaces:
javax.servlet.Filter

public class ServerBlockageControlFilter
extends AbstractControlFilter<ServerBlockageController>

Checks if server is in blocked state.

This class calls any ServerBlockageController instance which is specified in deployment descriptor (web.xml) and transfers the business blockage status check process of specified path. The ServerBlockageController instance performs the filter process of the request received from browser.

Server blockage check function

When the server is in blocked state, ServerBlockageException is thrown.

How to use

To use this function, perform the following settings in deployment descriptor (web.xml) and Bean definition file. "Id" attribute which is defined in Bean definition file sets the class that implements the ServerBlockageController interface in the "class" attribute of <bean> element. The <bean> element is sampleServerBlockageController.

Deployment descriptor (web.xml)

 <filter>
   <filter-name>serverBlockageControlFilter</filter-name>
   <filter-class>
     jp.terasoluna.fw.web.common.ServerBlockageControlFilter
   </filter-class>
   <init-param>
     <param-name>controller</param-name>
     <param-value>
       "sampleServerBlockageController"
     </param-value>
   </init-param>
 </filter>

 <filter-mapping>
   <filter-name>serverBlockageControlFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
 
Bean definition file
 <bean id="sampleServerBlockageController"
       class="jp.terasoluna...SampleServerBlockageController" />
 
<init-param> element can be omitted from the <filter> element in deployment descriptor (web.xml) at the time of setting the id attribute of <bean> element which is defined in Bean definition file, in the "serverBlockageController". serverBlockageController is the default value.

See Also:
AuthorizationControlFilter, AuthorizationController, AuthenticationControlFilter, AuthenticationController, BlockageControlFilter, BlockageController, ServerBlockageController

Field Summary
protected static ServerBlockageController controller
          ServerBlockageController instance.
static java.lang.String DEFAULT_SERVER_BLOCKAGE_BEAN_ID
          Default id which is used in "id" attribute of <bean> element to fetch implementation class of controller from DI container.
private static org.apache.commons.logging.Log log
          Log class.
private static java.lang.Class SERVER_BLOCKAGE_CONTROLLER_CLASS
          Controller class that transfers the server blockage process.
private static java.lang.String SERVER_BLOCKAGE_CONTROLLER_ERROR
          Error code which indicates the failure in generating the server blockage controller.
static java.lang.String SERVER_BLOCKAGE_THRU_KEY
          Key of "request" attribute which indicates that the request has passed through filter.
 
Fields inherited from class jp.terasoluna.fw.web.thin.AbstractControlFilter
config
 
Constructor Summary
ServerBlockageControlFilter()
           
 
Method Summary
 void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain)
          Performs server blockage check.
protected  java.lang.Class getControllerClass()
          Returns interface which should be implemented by the class that performs access control.
 java.lang.String getDefaultControllerBeanId()
          Returns default id at the time of fetching controller from DI container.
protected  java.lang.String getErrorCode()
          Returns error code that indicates the failure in generating the controller.
static ServerBlockageController getServerBlockageController()
          Returns ServerBlockageController.
 void init(javax.servlet.FilterConfig config)
          This method is called by the container when filter changes to Service Start state. After creating an instance of the Filter, container calls init method only once.
In order to request the Filter to execute the filter process, init method should finish normally. Container cannot change the Filter to service state when the init method is any of the following.
ServletException is thrown, It does not get recovered within the time defined by container, The implementation class of the controller does not exist or settings are abnormal.
 
Methods inherited from class jp.terasoluna.fw.web.thin.AbstractControlFilter
destroy, getController, setConfig
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SERVER_BLOCKAGE_THRU_KEY

public static final java.lang.String SERVER_BLOCKAGE_THRU_KEY
Key of "request" attribute which indicates that the request has passed through filter.

See Also:
Constant Field Values

DEFAULT_SERVER_BLOCKAGE_BEAN_ID

public static final java.lang.String DEFAULT_SERVER_BLOCKAGE_BEAN_ID
Default id which is used in the "id" attribute of <bean> element to fetch the implementation class of controller from DI container.

See Also:
Constant Field Values

SERVER_BLOCKAGE_CONTROLLER_ERROR

private static final java.lang.String SERVER_BLOCKAGE_CONTROLLER_ERROR
Error code which indicates the failure in generating the server blockage controller.

See Also:
Constant Field Values

SERVER_BLOCKAGE_CONTROLLER_CLASS

private static final java.lang.Class SERVER_BLOCKAGE_CONTROLLER_CLASS
Controller class that transfers the server blockage process.


log

private static org.apache.commons.logging.Log log
Log class.


controller

protected static ServerBlockageController controller
ServerBlockageController instance.

Constructor Detail

ServerBlockageControlFilter

public ServerBlockageControlFilter()
Method Detail

getServerBlockageController

public static ServerBlockageController getServerBlockageController()
Returns ServerBlockageController.

Returns:
ServerBlockageController

init

public void init(javax.servlet.FilterConfig config)
          throws javax.servlet.ServletException
This method is called by container when the filter changes to Service start state. After creating an instance of the filter, container calls init method only once.
In order to request the filter to execute the filter process, init method should finish normally. Container cannot change the Filter to service state when the init method is any of the following.

Specified by:
init in interface javax.servlet.Filter
Overrides:
init in class AbstractControlFilter<ServerBlockageController>
Parameters:
config - FilterConfig instance.
Throws:
javax.servlet.ServletException - Exception which is thrown at the time of abnormal initialization.
See Also:
Filter.init(javax.servlet.FilterConfig), AbstractControlFilter

doFilter

public void doFilter(javax.servlet.ServletRequest req,
                     javax.servlet.ServletResponse res,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
Performs server blockage check.

Specified by:
doFilter in interface javax.servlet.Filter
Specified by:
doFilter in class AbstractControlFilter<ServerBlockageController>
Parameters:
req - HTTP request
res - HTTP response
chain - Filter chain
Throws:
java.io.IOException - I/O error
javax.servlet.ServletException - Servlet exception
See Also:
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

getControllerClass

protected java.lang.Class getControllerClass()
Returns the interface that should be implemented by the class that performs access control.

Specified by:
getControllerClass in class AbstractControlFilter<ServerBlockageController>
Returns:
Class of controller which is used in this filter.

getErrorCode

protected java.lang.String getErrorCode()
Returns error code that indicates the failure in generating the controller.

Specified by:
getErrorCode in class AbstractControlFilter<ServerBlockageController>
Returns:
Error code

getDefaultControllerBeanId

public java.lang.String getDefaultControllerBeanId()
Returns the default id at the time of fetching the controller from the DI container.

Specified by:
getDefaultControllerBeanId in class AbstractControlFilter<ServerBlockageController>
Returns:
Default id attribute value