Mike, Yeah, I was trying to make that point as well that scoped components and IOC don't work well together. I realized after I sent the message that didn't state that anywhere. Thanks for putting it in clear english. :-)
Cheers, Jon... ----- Original Message ----- From: "Mike Cannon-Brookes" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, September 24, 2003 12:03 PM Subject: Re: [OS-webwork] Issue with component lifecycle dependencies > Jon, > > Ahh yes - that's exactly the model we use too :) > > My point below was that mixing 'scoped components' together in an IOC > framework (specifically narrowing the scope) is a thread nightmare. > > This is exactly the reason you can't do it (xwork won't let you) and the > reason that a ThreadLocal + IoC approach is the way to go. > > Sorry if I wasn't clear. > > Cheers, > Mike > > On 24/9/03 5:46 PM, "Jon Lipsky" ([EMAIL PROTECTED]) penned the > words: > > > Hi... > > > > I do this exact same thing with WebWork2 right now, however I use a > > ServletFilter and ThreadLocal variables to solve it. > > > > I have an app scoped component called PersistanceManager (PM) > > > > When a request comes in (A) it calls PM.getSession() and puts thes the > > session (SA) in the request and into a ThreadLocal variable. > > > > When a request comes in (B) it calls PM.getSession() and puts thes the > > session (SB) in the request and into a ThreadLocal variable. > > > > Similary, the request is finished the ServletFilter takes care of closing > > the session when the request is done. > > > > During the course of the request, the the code can just call methods like > > > > PM.create(theObject); > > PM.delete(theObject); > > > > What this really does is get this: > > > > public create(Object aObject) > > { > > // Get the session from the Thread Local variable > > Object vSession = threadLocalSession.get(); > > > > create(vSession,aObject); > > } > > > > public create(Object aSession, Object aObject) > > { > > ... Insert create code here ... > > } > > > > What this gives me is the abilitiy to have fine control over the session > > usage if I want, but for 99% of the time I can just assume the Session is > > already created in a ThreadLocal variable and happily go on my way. I can > > think of only 1 case that I have ever needed to open/close/manage the > > session manually once this version of the PersistanceManager and the > > ServletFilter were in place. > > > > Jon... > > > > BTW - I've used this pattern with Hibernate, JDBC and Prevayler with out any > > problems. (That is the reason the Session object is typed as an Object, > > because when I used this pattern with JDBC, then the session object is > > really a Connection object). > > > > ----- Original Message ----- > > From: "Mike Cannon-Brookes" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Wednesday, September 24, 2003 8:34 AM > > Subject: Re: [OS-webwork] Issue with component lifecycle dependencies > > > > > >> Uhm - please explain how it would be done? (could be done?) > >> > >> App scoped component : PersistenceManager (PM) > >> > >> There is therefore only one PM. > >> > >> Request scoped component: HibernateSession (HS) > >> > >> Two requests come in A and B, each with a request scoped component (HS A > > and > >> HS B) > >> > >> A calls PM.setSession(HS A); > >> B calls PM.sesSession(HS B); > >> A calls PM.save(); > >> > >> Now you're f'ked because request A is using HS B? :) > >> > >> This causes no end of pain as far as I can see. I'm not even sure how you > >> could possibly string them together? > >> > >> Mike > >> > >> On 24/9/03 2:24 PM, "Pat Lightbody" ([EMAIL PROTECTED]) penned the > > words: > >> > >>> I'd actually like to support this eventually (maybe 2.1). The reason for > >>> this is that most DB-based resources need to be request-scoped, but > > really > >>> only the DB (ie: Hibernate session) needs to. No reason why everything > > else > >>> must get dragged down to that level as well. Since WebWork (read: NOT > > XWork) > >>> can assume that a request scope can map directly to a single session > > scope, > >>> then this is totally possible (albeit hard). > >>> > >>> -Pat > >>> > >>> ----- Original Message ----- > >>> From: "Jason Carreira" <[EMAIL PROTECTED]> > >>> To: <[EMAIL PROTECTED]> > >>> Sent: Tuesday, September 23, 2003 8:20 PM > >>> Subject: RE: [OS-webwork] Issue with component lifecycle dependencies > >>> > >>> > >>> Umm... Because it's hard? :-) > >>> > >>> You'd have to have things stored in ThreadLocals and re-bound for every > >>> request, I think... > >>> > >>>> -----Original Message----- > >>>> From: Christian Meunier [mailto:[EMAIL PROTECTED] > >>>> Sent: Tuesday, September 23, 2003 11:14 PM > >>>> To: [EMAIL PROTECTED] > >>>> Subject: [OS-webwork] Issue with component lifecycle dependencies > >>>> > >>>> > >>>> Hi, > >>>> > >>>> looking at the doc i see "Note that while components are > >>>> allowed to have > >>>> dependencies on other components they must not depend on another > >>>> component that is of a narrower scope" , is there a good > >>>> reason why we > >>>> have this limitation, there are many good cases where an application > >>>> scoped components could depend on a session scoped/request scoped > >>>> component and it does not look like it's supported at the moment. > >>>> > >>>> Regards > >>>> Christian Meunier > >>>> > >>>> > >>>> > >>>> > >>>> ------------------------------------------------------- > >>>> This sf.net email is sponsored by:ThinkGeek > >>>> Welcome to geek heaven. > >>>> http://thinkgeek.com/sf > >>>> _______________________________________________ > >>>> Opensymphony-webwork mailing list > >>>> [EMAIL PROTECTED] > >>>> https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > >>>> > >>> > >>> > >>> ------------------------------------------------------- > >>> This sf.net email is sponsored by:ThinkGeek > >>> Welcome to geek heaven. > >>> http://thinkgeek.com/sf > >>> _______________________________________________ > >>> Opensymphony-webwork mailing list > >>> [EMAIL PROTECTED] > >>> https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > >>> > >>> > >>> ------------------------------------------------------- > >>> This sf.net email is sponsored by:ThinkGeek > >>> Welcome to geek heaven. > >>> http://thinkgeek.com/sf > >>> _______________________________________________ > >>> Opensymphony-webwork mailing list > >>> [EMAIL PROTECTED] > >>> https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > >> > >> > >> > >> ------------------------------------------------------- > >> This sf.net email is sponsored by:ThinkGeek > >> Welcome to geek heaven. > >> http://thinkgeek.com/sf > >> _______________________________________________ > >> Opensymphony-webwork mailing list > >> [EMAIL PROTECTED] > >> https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > >> > > > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > Opensymphony-webwork mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork