You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Gary Blomquist <gb...@net2phone.com> on 2006/01/16 20:12:17 UTC
Extending PersistentValve ?
I would like to be able to use round robin loading balancing with a
JDBCStore. However, it appears that using the PersistentManager with
JDBC store could cause the sessions to be stale when a session migrates
between workers due to the asyncronous behavior of the
PersistentManager. (I realize their is a SimpleTcpCluster available as
a clusterering solution but I can not use because it relies on
multicast.)
Viewing the source it appears that the PersistentValve with the
PersistentManager and JDBCStore could be a solution. It appears that
it would load a session from the store at the begging of each request
and save it back to the store at the end of the request. I would like
to modify the behavior to only load/save when the session is dirty based
on the last_access timestamps.
Any comments on the solution? ( I realize their is some performance
penalty due to object serialization and writing blobs to the database;
however, in our case I think this would not be prohibitive esp. if there
is a small amount of data in the session.)
Also, when I attempt to run Tomcat with the PersistentValve I get the
following exception:
SEVERE: An exception or error occurred in the container during the
request processing
java.lang.ClassCastException: org.apache.catalina.core.StandardEngine
at
org.apache.catalina.valves.PersistentValve.invoke(PersistentValve.java:9
9)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:
674)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.
java:866)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:684)
at java.lang.Thread.run(Thread.java:595)
Note: (I have not yet made mods to the PersistentValue)
Thanks for your assistance,
Gary Blomquist
Re: Extending PersistentValve ?
Posted by Peter Rossbach <pr...@objektpark.de>.
Am 16.01.2006 um 20:12 schrieb Gary Blomquist:
> I would like to be able to use round robin loading balancing with a
> JDBCStore. However, it appears that using the PersistentManager with
> JDBC store could cause the sessions to be stale when a session
> migrates
> between workers due to the asyncronous behavior of the
> PersistentManager. (I realize their is a SimpleTcpCluster
> available as
> a clusterering solution but I can not use because it relies on
> multicast.)
>
Wrote you own Membership tcp based service and use the real cluster
implementation :-)
At my feeling the old PersistentManager is only a deprecated prototyp
and not a real cluster solution.
> Viewing the source it appears that the PersistentValve with the
> PersistentManager and JDBCStore could be a solution. It appears
> that
> it would load a session from the store at the begging of each request
> and save it back to the store at the end of the request. I would like
> to modify the behavior to only load/save when the session is dirty
> based
> on the last_access timestamps.
>
> Any comments on the solution? ( I realize their is some performance
> penalty due to object serialization and writing blobs to the database;
> however, in our case I think this would not be prohibitive esp. if
> there
> is a small amount of data in the session.)
>
> Also, when I attempt to run Tomcat with the PersistentValve I get the
> following exception:
>
> SEVERE: An exception or error occurred in the container during the
> request processing
> java.lang.ClassCastException: org.apache.catalina.core.StandardEngine
> at
> org.apache.catalina.valves.PersistentValve.invoke
> (PersistentValve.java:9
> 9)
> at
> org.apache.catalina.connector.CoyoteAdapter.service
> (CoyoteAdapter.java:1
> 48)
> at
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
> at
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
> at
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
> at
> org.apache.jk.common.ChannelSocket.processConnection
> (ChannelSocket.java:
> 674)
> at
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt
> (ChannelSocket.
> java:866)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
> (ThreadPool
> .java:684)
> at java.lang.Thread.run(Thread.java:595)
>
> Note: (I have not yet made mods to the PersistentValue)
>
>
> Thanks for your assistance,
>
> Gary Blomquist
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org