Thanks for this, it does work. :) I'm disliking that I have to have a request to get the servlet context though, this makes the instantiation a bit messy as I have to check the dao reference is not null.
John ----- Original Message ----- From: Taha Hafeez Siddiqi To: Tapestry users Sent: Wednesday, May 01, 2013 9:55 AM Subject: Re: SessionListener interacting with Tapestry services? Hi John You can directly extract the registry from the ServetContext using http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/TapestryFilter.html#REGISTRY_CONTEXT_NAME Note: NOT TESTED public class MyListener implements HttpServletListener { public void sessionCreated(HttpServletRequest e){ Registry registry = (Registry)e.getSession().getServletContext().getAttribute(TapestryFilter.REGISTRY_CONTEXT_NAME); MyDAO dao = registry.getService(MyDAO.class); } } regards Taha On 01-May-2013, at 2:19 PM, John <[email protected]> wrote: > I configure a SessionListener in web.xml: > > <listener> > > <listener-class>epulse.audit.manager.SessionListener</listener-class> > > </listener> > > And in the listener I have directly wired the Logger so: > > public class SessionListener implements HttpSessionListener { > > > /** The log. */ > > private static Logger log = Logger.getLogger(SessionListener.class); > > > /** The audit log. */ > > @Inject > > private AuditDAO auditDAO; > > > I now want to inject a DAO to perform auditing but of course the SessionListener is managed by the web container, what to do? > > As it happens at present the audit log is just a wrapper service for SLF4j so I can directly instantiate the audit logging the same as the regular log. > > John
