HomeDocumentation > Configuring and administering > Configuring and administering the Apache Geronimo Server > Configuring the Web Container > Managing Valve
{scrollbar}

INLINE

In Tomcat, a valve is a Java class that can be inserted into the request processing pipeline. A valve executes as part of Tomcat's servlet container and is independent of the Web application.

Valves run in a chain where the last link in the chain is the Web application itself. Each valve performs its request processing, calls the next valve in the chain, performs its response processing, and returns to the valve that called it. See the Tomcat valve component for more information on the valves provided in the Tomcat library.

Currently, the valve cannot be configured using the Administrative console. Tomcat valves are initially defined in the <geronimo_home>/repository/org/apache/geronimo/configs/tomcat6/2.2/tomcat6-2.2.car/META-INF/plan.xml file; To change valves configuration you must modify <Geronimo_home>/var/config/config.xml.

The following sections illustrate common changes you may want to make to your valve chain.

2

Disable the Access Log Valve

By default, the initial configuration contains one valve referenced by the Tomcat engine. That valve is the Access Log Valve. This value is used to create log files that record every request used to access the Web container using the same format as those created by standard Web servers. These logs can later be analyzed by the administrative console and other standard log analysis tools to track page hit counts, user session activity, and so on. The files produced by this valve are rolled over nightly at midnight. Its classname is org.apache.catalina.valves.AccessLogValve and its GBean name is AccessLogValve. In some cases, administrators are not interested in logging information about the requests sent to the server and want to remove the overhead of the Access Log Valve. To remove the Access Log Valve from the valve chain, follow the procedure below.

  1. Stop the server;
  2. Backup <geronimo_home>/var/config/config.xml file and then open it in an editor.
  3. Add the following code right after <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> tag to disable the Access Log Valve, and then restart the server after you save the file. <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> ... <gbean name="TomcatEngine"> <attribute name="initParams"> name=Geronimo </attribute> <reference name="TomcatValveChain"/> </gbean> <gbean name="AccessLogValve" load="false"></gbean> ...

Add a second Valve

Let's take the Single Sign-on Valve as an example here. The Single Sign-on Valve is used to give users the ability to sign on to any Web application and then have their identity recognized by all other Web applications within the same container. To add the Single Sign-on Valve to the Access Log Valve in the initial valve chain, follow the procedure below.

  1. Stop the server;
  2. Backup <geronimo_home>/var/config/config.xml file and then open it in an editor.
  3. Add the following code right after <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> tag to define the Single Sign-on Valve, and then restart the server after you save the file. <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> <gbean name="AccessLogValve"> <reference name="NextValve"> <pattern> <name>SSOValve</name> </pattern> </reference> </gbean> <gbean gbeanInfo="org.apache.geronimo.tomcat.ValveGBean" name="org.apache.geronimo.configs/tomcat6/2.2/car?ServiceModule=org.apache.geronimo.configs/tomcat6/2.2/car, j2eeType=GBean,name=SSOValve"> <attribute name="className">org.apache.catalina.authenticator.SingleSignOn</attribute> </gbean>
    • The j2eeType= attribute in the added <gbean> tags have been split across several lines for readability. In your file, the attribute must be on a single line. Also you can add the other Valves by simply replacing org.apache.catalina.authenticator.SingleSignOn in <attribute name="className"> </attribute> block.

Configure a valve chain

Valves chained to the Tomcat engine are invoked for requests received by all the virtual hosts. In some cases, you may want to customize the valve chain for a given host. In this case, use the following procedure.

  1. Stop the server;
  2. Backup <geronimo_home>/var/config/config.xml file and then open it in an editor.
  3. Update config.xml as followed right after <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> tag to define a valve chain, and then restart the server after you save the file.: <module name="org.apache.geronimo.configs/tomcat6/2.2/car"> <gbean name="TomcatHost"> ... <reference name="TomcatValveChain"> <pattern> <name>valve0</name> </pattern> </reference> </gbean> <gbean gbeanInfo="org.apache.geronimo.tomcat.ValveGBean" name="org.apache.geronimo.configs/tomcat6/2.2/car?ServiceModule=org.apache.geronimo.configs/tomcat6/2.2/car, j2eeType=GBean,name=valve0"> <attribute name="className">class</attribute> <attribute name="initParams">parms</attribute> <reference name="TomcatValveChain"> <pattern> <name>valve1</name> </pattern> </reference> </gbean> <gbean gbeanInfo="org.apache.geronimo.tomcat.ValveGBean" name="org.apache.geronimo.configs/tomcat6/2.2/car?ServiceModule=org.apache.geronimo.configs/tomcat6/2.2/car, j2eeType=GBean,name=valve1"> <attribute name="className">class</attribute> <attribute name="initParams">parms</attribute> <reference name="TomcatValveChain"> <pattern> <name>valve2</name> </pattern> </reference> </gbean> ... <gbean gbeanInfo="org.apache.geronimo.tomcat.ValveGBean" name="org.apache.geronimo.configs/tomcat6/2.2/car?ServiceModule=org.apache.geronimo.configs/tomcat6/2.2/car, j2eeType=GBean,name=valvex"> <attribute name="className">class</attribute> <attribute name="initParams">parms</attribute> </gbean> where
  • TomcatHost is the name of the Tomcat virtual host GBean that is to be customized.
  • valve0 is the system unique name for the first valve GBean in the chain.
  • valve1 is the system unique name for the second valve GBean in the chain.
  • valvex is the system unique name for the last valve GBean in the chain.
  • class is the class name of a valid Tomcat valve.
  • parms is a white space separated list of valve parameters where each parameter has the form key=value where key is the keyword for the parameter and value is the value of the parameter. See the valve's documentation for information on supported parameters, if any.