Once the object is given to a particular request from the pool, that
object will not be given out again until it is returned.  Where exactly
do you see the problem?  I don't see how you can tell that there is a
problem with the pool code from the code given below.

john mcnally


Costas Stergiou wrote:
> 
> iif you look at the code that populates the context with the request
> scope tools, it just pools an object from the Pool (doesn't create
> a new one each time). So, the same instance can be used for more than
> one http requests.
> 
> Here is the code from the TurbinePullService.java:
> 
>     /**
>      * Populate the given context with the request-scope tools
>      *
>      * @param context a Velocity Context to populate
>      * @param data a RunData instance
>      */
>     private void populateWithRequestTools(Context context, RunData data)
>     {
>         // Get the PoolService to fetch object instances from
>         PoolService pool = (PoolService)
> 
> TurbineServices.getInstance().getService(PoolService.SERVICE_NAME);
> 
>         // Iterate the tools
>         Iterator it = requestTools.iterator();
>         while (it.hasNext())
>         {
>             ToolData toolData = (ToolData)it.next();
>             try
>             {
>                 Object tool = pool.getInstance(toolData.toolClass);
>                 if (tool instanceof ApplicationTool)
>                 {
>                     // request tools are init'd with a RunData object
>                     ((ApplicationTool)tool).init(data);
>                 }
>                 // put the tool in the context
>                 context.put(toolData.toolName, tool);
>             }
>             catch (Exception e)
>             {
>                 Log.error(
>                         "Could not instantiate tool " +
> toolData.toolClassName
>                         + " to add to the context",e);
>             }
>         }
>     }
> 
> The only think that it does is that it init's the tool (with the appropriate
> rundata) before
> adding it to the context. But actually it can be the same object instance
> that someone else
> is using at the same moment!
> 
> Is that so?
> That's what I understand from the code above,
> Please, correct me if I am wrong.
> Thanks,
> Costas
> 
> ----- Original Message -----
> From: "Eric Dobbs" <[EMAIL PROTECTED]>
> To: "Turbine Users List" <[EMAIL PROTECTED]>
> Sent: Wednesday, November 28, 2001 5:51 PM
> Subject: Re: TurbinePullService + UIManager synchornization problem (Maybe
> BUG) ?
> 
> >
> > On Tuesday, November 27, 2001, at 12:39  AM, Costas Stergiou wrote:
> >
> > > Actually, when I mean "thread safe" I didn't mean "Java thread"
> > > I meant "Request Safe" (actually it is thread safe also) but I don't
> > > want to synchronize on the request tool of course.
> > > But on a per-request basis, it is possible that the same instance of the
> > > tool is being used at the same time for more than one requests
> > > (threads);
> > > since a tool is only being taken from the Pool service and init'ed but
> > > there is no check that this tool is not being used by another thread.
> >
> > Here's how I understand it.  Someone correct me if I get this wrong.
> >
> > If the UIManager is configured to be used in the request scope, then
> > a new UIManager object will be instantiated with each request (or
> > pulled from the pool).  So you get one UIManager object per request,
> > and that should fix your problem.
> >
> > If it is configured for any other scope (which it is by default) then
> > multiple requests (and therefore multiple threads) will be accessing
> > the same instance of the UIManager.  In this case, the UIManager needs
> > to be modified for thread-safety.
> >
> > -Eric
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to