On Apr 28, 2010, at 9:57 AM, Kevin Jansz wrote:

> That is useful to know ... is the Valve in a state that it can be
> shared? Did you base any of the interaction with the manager/store on
> the SimpleTcpReplicationManager?

I actually use my own, from-scratch session replication manager. It's still 
alpha, but it uses RabbitMQ to replicate sessions (I'm adding ZooKeeper into 
the mix right now, as well, to coordinate session updates). The Valve is 
responsible for calling a method I added to my Store called "replicateSession" 
after the request is processed. This sounds like it's similar in functionality 
to what you're after. 

I just perused the guts of SimpleTcpReplicationManager and it looks like you 
could force a replication event by setting isDirty to true in the Valve, after 
the request is processed (this is untested pseudo-code, BTW):

public class ReplicationValve extends ValveBase {

  protected static final String info = "ReplicationValve/1.0";

  @Override
  public String getInfo() {
    return info;
  }

  @Override
  public void invoke( Request request, Response response ) throws IOException, 
ServletException {

    getNext().invoke( request, response );

    Session session = null;
    try {
      session = request.getSessionInternal();
    } catch ( Throwable t ) {
      // IGNORED
    }
    if ( null != session ) {
      ((ReplicatedSession)session).setIsDirty(true);
    }
  }
}

> I guess the dilemma for us is the
> org.apache.catalina.ha.session.SimpleTcpReplicationManager seems to
> have the functionality we require (ie from Tomcat 5.0) and there isn't
> anything much more we need above that. Just not sure if users are
> advised against using it for session replication. If so then I guess
> writing your own does sound like the only alternative but that does
> seem unusual when tomcat used to have replication "ignoring deltas"
> before and other app servers (I can actually only speak of websphere)
> seem to let you do this. Would the rationale be that you should only
> put immutable objects in the session and tomcat is trying to direct
> users to best practice?

I got to the point where, in my private, hybrid cloud environment, there aren't 
best practices, so I had to just do it myself.

Jon Brisbin
Portal Webmaster
NPC International, Inc.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to