> -----Original Message-----
> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Sent: Monday, July 22, 2013 5:45 PM
> To: Tomcat Users List
> Subject: Re:[OT] Enable session persistence between two tomcat nodes
> behind load balancer
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> Jeffrey,
> 
> On 7/22/13 10:00 AM, Jeffrey Janner wrote:
> >> -----Original Message----- From: vi...@thepenguin.org
> >> [mailto:vi...@thepenguin.org] Sent: Saturday, July 20, 2013 7:25 AM
> >> To: Tomcat Users List Subject: Enable session persistence between
> two
> >> tomcat nodes behind load balancer
> >>
> >> Hello:
> >>
> >> I have been searching for an answer to how to set this up. I find a
> >> lot of posts on session persistence but none seem to describe how to
> >> set it up. Is there a simple explanation out there that tells me how
> >> I go about setting up session persistence (with Apache, I would just
> >> set up memcached on the db server and configure the memcache module
> >> on each Apache instance to point to the memcached and it works). I
> >> don't need opcode persistence. I just want the tomcats to either a)
> >> direct all session traffic to a single node or b) make the two
> >> tomcats aware of all sessions.
> >> Can someone point me in the right direction? I am not a java coder,
> >> but if code changes need to be made, I can work through it.
> >>
> >> Thanks,
> >>
> >> Vicki
> >>
> >>
> >
> > Vicki - I think you've got your terms a little mixed up here, but not
> > much. From your description what you are really looking for is
> session
> > "replication". You are in luck, because the default server.xml has a
> > commented out section on how to set up replication right there (at
> > least up to Tomcat 6.x). You also want to review the documentation on
> > replication on the Tomcat website for your release
> > (http://tomcat.apache.org). I said "not much" above, because
> > replication relies on persistence-ability, meaning they both need the
> > same basic setup in order to work. As I recall from looking into it
> > (but not setting up a production setup), you must declare your
> > sessions persistable in your code for either function to work
> > properly. Jeff p.s. In case you're wondering why not production,
> turns
> > out our initial dev team put way too much info in the session to make
> > replication a feasible option for us at the time.  I think we've been
> > whittling it away over time, but haven't tried it since the first
> > effort.
> 
> I've written (but not actually used - it was just a proof-of-concept) a
> Filter and HttpSession wrapper that can wrap session data in an object
> wrapper whose only member is a transient Object reference[1].
> This will allow you to throw "huge" objects into the session that won't
> be sent across the wire (only their empty wrappers will be sent).
> 
> If your application will tolerate a session attribute "suddenly" being
> null, and can recover from that by re-building the necessary data, you
> could use the same trick to enable Tomcat's session persistence.
> 
> - -chris
> 
> [1] You can also do something similar with WeakReference objects, which
> allows you to keep huge amounts of data cached in your sessions but
> allow the garbage collector to discard some of that cached data if it's
> getting low on memory.

Thanks for the insight Chris, but I seriously doubt our code is that resilient.
Besides, I'd much rather have code that's done "right" rather than a bunch of 
band-aids to work around the issues.
Having a similar discussion right now about an issue that could be fixed in 
under 10 lines of code changes, a rebuild, and an update of the affected client 
(a phoneapp), but I'm have to deal with it in a massive configuration change 
because that's "easier" for the dev team.  (Codespeack for "no one really knows 
how to modify phoneapp").

Reply via email to