Or is this a better method, using the Listener in Servlet 2.4 rather than the filter in Servlet 2.3

<listener>
<listener-class>org.objectstyle.cayenne.conf.WebApplicationContextProvider</listener-class>
</listener>

Sample DataContext retrieval code:

import org.objectstyle.cayenne.access.DataContext;
...
// get session DataContext bound to the current request thread
DataContext context = DataContext.getThreadDataContext();

What are the advantages.


From: "Cypher her" <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: RE: accessing cayenne sessions
Date: Tue, 04 Apr 2006 22:36:53 +0000

Hi

I am using Tapestry 4, Java 1.5, JBoss 4 and Cayenne 1.2.

So if I undrstand you correctly I can create a subclass of BasePage which will have a getSession() method. But in that page, to get the session I would need to use the WebApplicationContextFilter and do something like

add his to my web.xml

<filter>
   <filter-name>CayenneFilter</filter-name>
<filter-class>org.objectstyle.cayenne.conf.WebApplicationContextFilter</filter-class>
</filter>
...
<filter-mapping>
   <filter-name>CayenneFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

and create a class like this

import org.objectstyle.cayenne.access.DataContext;

public class MyBasePage extends BasePage
{

   public DataContext getDataContext()
   {
       return DataContext.getThreadDataContext();
   }
}

and all of my pages should subclass MyBasePage. And I am assuming Tapestry and the servlet container will take care of making sure the Session is consistent throughout the workflow i.e. each user gets a unique DataContext and they maintain the same DataContext from page to page until the session times out..

Thanks again for your help.

Lawrence


From: "Gentry, Michael (Contractor)" <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: <[email protected]>
Subject: RE: accessing cayenne sessions
Date: Tue, 4 Apr 2006 10:45:29 -0400

Yes, but using Tapestry you can have a common superclass for your pages
that provides a getSession() method and it works transparently.  You
don't need to think about Http*.

/dev/mrg


-----Original Message-----
From: Mike Kienenberger [mailto:[EMAIL PROTECTED]
Sent: Tuesday, April 04, 2006 10:26 AM
To: [email protected]
Subject: Re: accessing cayenne sessions


On 4/4/06, Cyp her <[EMAIL PROTECTED]> wrote:
> * Are there any convenient methods for accessing the Session like in
> WebObjects where there is a session class in the application?

In servlets, there's an HttpSession object that you can pull out of
the HttpServletRequest.   Instead of being a subclassable object, it
instead holds references to a Map (think NSDictionary) where you can
store objects the entire session.  How you get a reference to your
HttpSession object depends on the framework.

http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/http/Http
Session.html

_________________________________________________________________
Be the first to hear what's new at MSN - sign up to our free newsletters! http://www.msn.co.uk/newsletters

_________________________________________________________________
The new MSN Search Toolbar now includes Desktop search! http://join.msn.com/toolbar/overview

Reply via email to