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: [email protected] 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]
