You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by Santiago Gala <sg...@hisitech.com> on 2002/06/17 11:04:19 UTC

Re: cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/ser vices/statemanager BaseStateManagerService.java JetspeedHttpStateManagerS ervice.java JetspeedStateManagerService.java

Glenn Golden wrote:

>Paul, Developers,
>
>I ran tests of these services before I checked them in, and we are using
>them in our project.  I don't have time right now to create proper
>check-in-able unit tests, but could do so later.
>
>These are tricky to test, as they must be run within a running server with
>an active servlet container providing http sessions; tests require two
>different sessions and actual http requests coming in... I also need to
>expire an http session in the tests... I'd be interested to see how this can
>be unit tested.
>
>I tested it by writing a portlet that will invoke tests against the service
>- which I can run from two different browsers so as to get the two different
>sessions...
>
>Anyway, there's something fishy about the JetspeedHttpStateManagerService,
>although it passed all my tests!  It doesn't seem to provide the state
>information created by on servlet to another servlet, even though they
>should be in the same session.  Haven't tracked this one down yet.
>  
>
If the two servlets are in different contexts, it is bound to fail, as 
the variable storing the information is a static member of a class, and 
two classes are the same if they have the same name *and* the same 
classloader, and this is guaranteed *not* to be true in different 
contexts (different classloaders), unless you put the .jar containing 
the class in a common context, like TOMCAT_HOME/lib in tomcat 3.2.X, or 
TOMCAT_HOME/common or shared in Tomcat 4.0

I wonder if you thought about using ThreadLocal variables for this 
feature. I had been thinking about this solution for storing 
request-oriented info. It was rather slow in jdk1.2, but it seems it has 
improved in recent java VMs. Putting the rundata in a ThreadLocal 
variable at the start of the request processing, and removing it at the 
end will achieve rather similar results to what you are doing here.

>I'll resolve that before I enable it as the default for Jetspeed (which is
>my plan) and start to change parts of jetspeed to use this service.
>  
>
Which parts will be using this?

While it can be useful, it makes strong assumptions about the servlet 
container (one thread per request). These assumptions are currenty true 
for all containers, though.

>- Glenn
>  
>
Regards,
   Santiago


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>