| java.lang.Object org.apache.catalina.valves.ValveBase org.apache.catalina.ha.session.JvmRouteBinderValve
JvmRouteBinderValve | public class JvmRouteBinderValve extends ValveBase implements ClusterValve,Lifecycle(Code) | | Valve to handle Tomcat jvmRoute takeover using mod_jk module after node
failure. After a node crashed the next request going to other cluster node.
Now the answering from apache is slower ( make some error handshaking. Very
bad with apache at my windows.). We rewrite now the cookie jsessionid
information to the backup cluster node. After the next response all client
request goes direct to the backup node. The change sessionid send also to all
other cluster nodes. Well, now the session stickyness work directly to the
backup node and traffic don't go back too restarted cluster nodes!
At all cluster node you must configure the as ClusterListener since 5.5.10
org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener JvmRouteSessionIDBinderListener or before with
org.apache.catalina.ha.session.JvmRouteSessionIDBinderListenerLifecycle.
Add this Valve to your host definition at conf/server.xml .
Since 5.5.10 as direct cluster valve:
<Cluster>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
</Cluster>
Before 5.5.10 as Host element:
<Hostr>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
</Hostr>
Trick:
You can enable this mod_jk turnover mode via JMX before you drop a node to all backup nodes!
Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk
and then drop node and restart it! Then enable mod_jk Worker and disable JvmRouteBinderValves again.
This use case means that only requested session are migrated.
author: Peter Rossbach version: $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $ |
Method Summary | |
public void | addLifecycleListener(LifecycleListener listener) Add a lifecycle event listener to this component. | protected void | changeSessionID(Request request, Response response, String sessionId, String newSessionID, Session catalinaSession) | public LifecycleListener[] | findLifecycleListeners() Get the lifecycle listeners associated with this lifecycle. | public CatalinaCluster | getCluster() | public boolean | getEnabled() | public String | getInfo() Return descriptive information about this implementation. | protected String | getLocalJvmRoute(Request request) | protected Manager | getManager(Request request) | public long | getNumberOfSessions() | public String | getSessionIdAttribute() set session id attribute to failed node for request. | protected void | handleJvmRoute(Request request, Response response, String sessionId, String localJvmRoute) Handle jvmRoute stickyness after tomcat instance failed. | protected void | handlePossibleTurnover(Request request, Response response) handle possible session turn over. | public void | invoke(Request request, Response response) Detect possible the JVMRoute change at cluster backup node.. | public void | removeLifecycleListener(LifecycleListener listener) Remove a lifecycle event listener from this component. | protected void | sendSessionIDClusterBackup(ClusterManager manager, Request request, String sessionId, String newSessionID) Send the changed Sessionid to all clusternodes. | public void | setCluster(CatalinaCluster cluster) | public void | setEnabled(boolean enabled) | protected void | setNewSessionCookie(Request request, Response response, String sessionId) | public void | setSessionIdAttribute(String sessionIdAttribute) | public void | start() Prepare for the beginning of active use of the public methods of this
component. | public void | stop() Gracefully terminate the active use of the public methods of this
component. |
enabled | protected boolean enabled(Code) | | enabled this component
|
info | final protected static String info(Code) | | The descriptive information about this implementation.
|
numberOfSessions | protected long numberOfSessions(Code) | | number of session that no at this tomcat instanz hosted
|
started | protected boolean started(Code) | | Has this component been started yet?
|
addLifecycleListener | public void addLifecycleListener(LifecycleListener listener)(Code) | | Add a lifecycle event listener to this component.
Parameters: listener - The listener to add |
changeSessionID | protected void changeSessionID(Request request, Response response, String sessionId, String newSessionID, Session catalinaSession)(Code) | | change session id and send to all cluster nodes
Parameters: request - current request Parameters: response - current response Parameters: sessionId - original session id Parameters: newSessionID - new session id for node migration Parameters: catalinaSession - current session with original session id |
findLifecycleListeners | public LifecycleListener[] findLifecycleListeners()(Code) | | Get the lifecycle listeners associated with this lifecycle. If this
Lifecycle has no listeners registered, a zero-length array is returned.
|
getEnabled | public boolean getEnabled()(Code) | | Returns the enabled. |
getInfo | public String getInfo()(Code) | | Return descriptive information about this implementation.
|
getLocalJvmRoute | protected String getLocalJvmRoute(Request request)(Code) | | get jvmroute from engine
Parameters: request - current request return jvmRoute from ManagerBase or null |
getManager | protected Manager getManager(Request request)(Code) | | get Cluster DeltaManager
Parameters: request - current request manager or null |
getNumberOfSessions | public long getNumberOfSessions()(Code) | | Returns the number of migrated sessions. |
getSessionIdAttribute | public String getSessionIdAttribute()(Code) | | set session id attribute to failed node for request.
Returns the sessionIdAttribute. |
handleJvmRoute | protected void handleJvmRoute(Request request, Response response, String sessionId, String localJvmRoute)(Code) | | Handle jvmRoute stickyness after tomcat instance failed. After this
correction a new Cookie send to client with new jvmRoute and the
SessionID change propage to the other cluster nodes.
Parameters: request - current request Parameters: response - Tomcat Response Parameters: sessionId - request SessionID from Cookie Parameters: localJvmRoute - local jvmRoute |
invoke | public void invoke(Request request, Response response) throws IOException, ServletException(Code) | | Detect possible the JVMRoute change at cluster backup node..
Parameters: request - tomcat request being processed Parameters: response - tomcat response being processed exception: IOException - if an input/output error has occurred exception: ServletException - if a servlet error has occurred |
removeLifecycleListener | public void removeLifecycleListener(LifecycleListener listener)(Code) | | Remove a lifecycle event listener from this component.
Parameters: listener - The listener to add |
setEnabled | public void setEnabled(boolean enabled)(Code) | | Parameters: enabled - The enabled to set. |
setSessionIdAttribute | public void setSessionIdAttribute(String sessionIdAttribute)(Code) | | get name of failed reqeust session attribute
Parameters: sessionIdAttribute - The sessionIdAttribute to set. |
start | public void start() throws LifecycleException(Code) | | Prepare for the beginning of active use of the public methods of this
component. This method should be called after configure() ,
and before any of the public methods of the component are utilized.
exception: LifecycleException - if this component detects a fatal error that prevents thiscomponent from being used |
stop | public void stop() throws LifecycleException(Code) | | Gracefully terminate the active use of the public methods of this
component. This method should be the last one called on a given instance
of this component.
exception: LifecycleException - if this component detects a fatal error that needs to bereported |
|
|