velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David P <chillro...@yahoo.com>
Subject Re: How to make #for thread-safe?
Date Sat, 08 Apr 2006 03:44:10 GMT


--- Nathan Bubna <nbubna@gmail.com> wrote:

> In a web application, thread-safety is only a
> concern if your context
> objects are used in the session or application
> scopes.

I'm using VelocityServlet, which provides a context
object when its handleRequest() method is invoked. I
use Context::put() to add containers to the data model
used by the template. Some containers are static in
order to maintain state.

I don't see a way to indicate scope via put().

> Each servlet request is just one thread in a normal
> web application. So for each request, you
> should probably be creating a new VelocityContext
> and new/different instances of any mutable classes
> into that context.  This is the standard practice
> for any view technology 
> (JSP/Velocity/Freemarker/etc).

I suppose I could make a copy of every static
container before putting that copy into the context,
but it seems pretty wasteful. It would also preclude
putting any singletons into the context.


> On 4/7/06, David P <chillrobot@yahoo.com> wrote:
> > Some archive msgs like this one point out that
> > VelocityContext is not thread-safe:
> >
> >
>
http://servlets.com/archive/servlet/ReadMsg?msgId=148259&listName=velocity-user
> >
> > I have put some objects in my context that could
> be
> > modified by other threads.  I can make these
> accesses
> > thread-safe when using #set and #if, but I can't
> think
> > of a way to protect containers when used by #for. 
> For
> > example, another thread might remove an element
> from a
> > container in the context while #for is iterating
> over
> > it. Synchronizing the iterator method of the
> container
> > wouldn't provide any protection. And putting a big
> > synchronize block inside every servlet in the app,
> > blocking on a shared object, wouldn't work because
> > there's no way to get the Velocity template to
> wait on
> > the same lock...right?
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> >
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> >
> >
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Mime
View raw message