RE: [JBoss-dev] Tomcat session replication

2003-11-25 Thread marc fleury
Good job, 

But a clear job for AOP in JB4.  The cache product is DYNAMITE. 

marcf 

> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Sacha Labourey
> Sent: Sunday, November 23, 2003 6:17 PM
> To: [EMAIL PROTECTED]; 
> [EMAIL PROTECTED]
> Subject: [JBoss-dev] Tomcat session replication
> 
> Hello,
> 
> A few changes in the Tomcat HTTP Session replication code.
> 
> First, some unnecessary synchronization has been removed. 
> This should lead to better scalability and in some cases 
> remove the impression that the replication is "hanging".
> 
> Second, the replication has been improved. Without using 
> AOP-like frameworks, it is hard to determine when an HTTP 
> session is modified. When setAttribute is called, the 
> situation is (almost) obvious. However, if only getAttribute 
> is called, you never know as something like that could occur:
>   ( (HashMap)session.getAttribute ("bla") ).put 
> ("newKey", "newValue");
> 
> In that case, the setAttribute is never called but the 
> content of the session is modified. Consequently, it is up to 
> the developer to help the container optimize its work.
> 
> A new tag () has been added to 
> JBoss-web.xml:
> 
> virtual-host?, use-session-cookies?, 
> session-replication-trigger?, resource-env-ref*,
>resource-ref* , ejb-ref* , ejb-local-ref*, depends*)>
> 
> This tag determines when the container should consider that a 
> session must be replicated accross the cluster. Possible values are:
>   1 - "SET_AND_GET"
>   2 - "SET_AND_NON_PRIMITIVE_GET" (default value)
>   3 - "SET"
> 
> The first option is conservative but not optimal 
> (performance-wise): it will replicate the session even if its 
> content has not been modified but simply accessed 
> (getAttribute). As shown above, there is no deterministic way 
> to know if the content of an attribute is not itself 
> modified. It WAS the default value in the past (simply 
> because it was the only implementation available), which 
> explain why the perf will be improved now.
> 
> The second option is conservative but will only replicate if 
> a non-primitive Object has been accessed (Integer, Long, 
> Double, Short, String, etc. which are immutables). We can 
> take that decision because the previous example cannot be 
> used to modify a session without calling setAttribute (as the 
> objects are immutable). It is the NEW default value.
> 
> The third option considers that the developer will 
> explicitely call setAttribute on the session otherwise it 
> will not be automatically replicated.
> 
> Tag examples:
>  
> SET_AND_GET
>   or
>  
> SET_AND_NON_PRIMITIVE_GET n-replication-
> trigger>
>   or
>  
> SET
> 
> 
> Furthermore, in the past, when a new session was created, two 
> replications were occuring (one for the creation, one when 
> setting the session). Now, these two steps are reduce to a 
> single step => a single replication.
> 
> These two changes should improve the performance of your 
> current clustered Web Application (using Tomcat).
> 
> Cheers,
> 
> 
>   Sacha
> 
> 
> 
> 
> ---
> This SF.net email is sponsored by: SF.net Giveback Program.
> Does SourceForge.net help you be more productive?  Does it 
> help you create better code?  SHARE THE LOVE, and help us 
> help YOU!  Click Here: http://sourceforge.net/donate/ 
> ___
> JBoss-Development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 



---
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
___
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development


[JBoss-dev] Tomcat session replication

2003-11-23 Thread Sacha Labourey
Hello,

A few changes in the Tomcat HTTP Session replication code.

First, some unnecessary synchronization has been removed. This should lead
to better scalability and in some cases remove the impression that the
replication is "hanging".

Second, the replication has been improved. Without using AOP-like
frameworks, it is hard to determine when an HTTP session is modified. When
setAttribute is called, the situation is (almost) obvious. However, if only
getAttribute is called, you never know as something like that could occur:
( (HashMap)session.getAttribute ("bla") ).put ("newKey",
"newValue");

In that case, the setAttribute is never called but the content of the
session is modified. Consequently, it is up to the developer to help the
container optimize its work.

A new tag () has been added to JBoss-web.xml:



This tag determines when the container should consider that a session must
be replicated accross the cluster. Possible values are:
  1 - "SET_AND_GET"
  2 - "SET_AND_NON_PRIMITIVE_GET" (default value)
  3 - "SET"

The first option is conservative but not optimal (performance-wise): it will
replicate the session even if its content has not been modified but simply
accessed (getAttribute). As shown above, there is no deterministic way to
know if the content of an attribute is not itself modified. It WAS the
default value in the past (simply because it was the only implementation
available), which explain why the perf will be improved now.

The second option is conservative but will only replicate if a non-primitive
Object has been accessed (Integer, Long, Double, Short, String, etc. which
are immutables). We can take that decision because the previous example
cannot be used to modify a session without calling setAttribute (as the
objects are immutable). It is the NEW default value.

The third option considers that the developer will explicitely call
setAttribute on the session otherwise it will not be automatically
replicated.

Tag examples:
 
SET_AND_GET
  or
 
SET_AND_NON_PRIMITIVE_GET
  or
 SET


Furthermore, in the past, when a new session was created, two replications
were occuring (one for the creation, one when setting the session). Now,
these two steps are reduce to a single step => a single replication.

These two changes should improve the performance of your current clustered
Web Application (using Tomcat).

Cheers,


Sacha




---
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
___
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development