On Fri, 2008-05-02 at 08:01 -0700, sppzs wrote:
> Hi Simon,
> 
> While testing we found that
> If a user A is logged from PC A 
> and a different user B is logged from PC B with totally different sessions
> and different user logins. 
> The user B was able to see data from user A in his
> browser session, specifically the code between the t:buffer tags in the jsf
> page was showing data belonging to a different user.
> Both users were logged in around the sametime. It seems like the t:buffer
> contents is stored in the FacesContext, and when user B requested his page
> the <h:outputText value="<BufferVariable>" />
> the <h:outputText? tag picked up the value from the FacesContext for User A.
> 
> 
> FYI
> Here is the contents of manifest.mf file inside Tomahawk.jar
> Implementation-Title: MyFaces
> Implementation-Version: 1.1.1 (October 25 2005)
> Implementation-Vendor: MyFaces Project Team (http://myfaces.apache.org)

That's a really ancient version of Tomahawk...

In modern versions, the place where the data is stored is specified by
the "into" property, as described here:
  http://myfaces.apache.org/tomahawk/tlddoc/t/buffer.html

You aren't specifying an application-scoped variable as the "into"
expression are you?

I can't see any other reason why this would happen. The FacesContext is
a per-request object, and t:buffer (class BufferRenderer) just replaces
the current responseWriter with a newly-created instance to capture the
output. Something would need to be seriously wrong for a request-scoped
variable to leak into another request.

If the "into" expression looks ok, then I suggest you try upgrading. If
you cannot upgrade, then you'll probably need to debug into the
BufferRenderer class.

I haven't heard of anyone having this problem, and have used t:buffer in
the past without having this problem myself (though on a more recent
tomahawk version).

Regards,
Simon

Reply via email to