How are you accessing the service in your servlet filter?  Did you write the
servlet filter?  Why can't you use the tapestry filter mechanism?

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of hv @ Fashion Content
Sent: Monday, July 10, 2006 8:39 PM
To: users@tapestry.apache.org
Subject: Re: Using Discardable threaded services correctly?

Since I use the service in every page of my app I have no doubt it will be 
instantiated. Also it's accessed in the first part of the filter.
I think there might be something spooky going on with logging, althought 
that would be the first time I have experienced logging statements/internal 
errors just being eaten.
When I removed the comment the service.threadDidDiscardService threw a 
nullpointer exception in the logging statement, indicating that the static 
logger variable was null..... Very odd.

Henrik
"James Carman" <[EMAIL PROTECTED]> skrev i en meddelelse 
news:[EMAIL PROTECTED]
> HiveMind will not instantiate your service unless it is needed (which 
> would
> explain why you saw the expected behavior after you called a method).  If 
> it
> instantiates it, then it'll clean it up.
>
> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] On Behalf Of hv @ Fashion Content
> Sent: Monday, July 10, 2006 7:55 PM
> To: users@tapestry.apache.org
> Subject: Using Discardable threaded services correctly?
>
> I have a ServletFilter which sets up an identity object for each request.
> Previously it was stored with setAttribute, but now I use a threaded
> HiveMind service. So far it has worked just fine, but I can't seem to get
> the _Discardable_ functionality to work properly.
>
> PersonalIdentity extends Discardable. The first step I tried was to insert

> a
>
> logging statement in void threadDidDiscardService().
>
> Nothing happened!
>
> Eventually I tried to just call a function on PersonalIdentity, which 
> seemed
>
> to work, and moreover it now threadDidDiscardService got called.
>
> Does Tapestry do some threaded housecleaning in ApplicationServlet?
>
> I suppose that I am missing something obvious, or just making a basic
> blunder. But which one?
>
> Thanks,
> Henrik
>
> The filter looks something like this:
>
> try {
> if (firstRegistry == null) {
>    firstRegistry = (Registry)
> context.getAttribute("org.apache.tapestry.Registry:portalapp");
> }
> if (firstRegistry != null) {
>    logger.debug("Pushed PersonalIdentity to registry
> "+firstRegistry.hashCode());
>    PersonalIdentity ident = (PersonalIdentity)
> firstRegistry.getService(PersonalIdentity.class);
> ...
> }
>
> chain.doFilter(req,res);
> }
> finally {
>   if (firstRegistry != null) {
> //    PersonalIdentity ident = (PersonalIdentity)
> firstRegistry.getService(PersonalIdentity.class);
> //    ident.saveChanges();
> //    ident = null;
>    firstRegistry.cleanupThread();
>   }
>   long processingTime = System.currentTimeMillis() - startTime;
>   webApp.publishEvent(new RequestHandledEvent(
>     this,req.getRequestURI(),processingTime,req.getRemoteAddr(),
>     req.getMethod(),null
>    ));
>  }
>
> The registration for ident is:
>
> <service-point id="Identity"
> interface="com.bluprinted.personal.market.PersonalIdentity">
>
> <invoke-factory model="threaded">
>
> <construct
> class="com.bluprinted.personal.market.PersonalIdentityImpl"></construct>
>
> </invoke-factory>
>
> </service-point>
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> 




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



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

Reply via email to