No it's not binder.bind(ISCMailer.class, SCMailerImpl.class);
On Thu, Dec 20, 2012 at 11:48 PM, Thiago H de Paula Figueiredo < thiag...@gmail.com> wrote: > Is this ISCMailer server perthread? Just guessing . . . > > > On Thu, 20 Dec 2012 19:37:48 -0200, Muhammad Gelbana <m.gelb...@gmail.com> > wrote: > > One of my sub-modules registers a "Registry will shutdown" listener. That >> listener is a service that needs to know if the app is shutting down and >> thats how I'm doing this: >> >> >> >> @Startup >> >>> public void startup(final ISCMailer mailer, RegistryShutdownHub >>> registryShutdown) { >>> registryShutdown.**addRegistryWillShutdownListene**r(new >>> Runnable() { >>> @Override >>> public void run() { >>> mailer.shutdown(); >>> } >>> }); >>> } >>> >> >> >> The thing is that tapestry throws an exception whenever the app shuts >> down: >> >> 23:29:04 ERROR (**RecursiveServiceCreationCheckW** >> rapper.java:64)-[Thread-999] >> >>> Construction of service ISCMailer failed: Method >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.** >>> getObject(RegistryImpl.java:**853) >>> may no longer be invoked. >>> org.apache.tapestry5.ioc.**internal.OperationException: Method >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.** >>> getObject(RegistryImpl.java:**853) >>> may no longer be invoked. >>> at >>> org.apache.tapestry5.ioc.**internal.OperationTrackerImpl.** >>> logAndRethrow(**OperationTrackerImpl.java:121) >>> at >>> org.apache.tapestry5.ioc.**internal.OperationTrackerImpl.** >>> invoke(OperationTrackerImpl.**java:88) >>> at >>> org.apache.tapestry5.ioc.**internal.**PerThreadOperationTracker.** >>> invoke(**PerThreadOperationTracker.**java:87) >>> at >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.invoke(** >>> RegistryImpl.java:1124) >>> at >>> org.apache.tapestry5.ioc.**internal.util.InternalUtils.** >>> calculateParameters(**InternalUtils.java:293) >>> at >>> org.apache.tapestry5.ioc.**internal.util.InternalUtils$** >>> 23.invoke(InternalUtils.java:**1488) >>> at >>> org.apache.tapestry5.ioc.**internal.util.InternalUtils$** >>> 23.invoke(InternalUtils.java:**1483) >>> at >>> org.apache.tapestry5.ioc.**internal.OperationTrackerImpl.** >>> invoke(OperationTrackerImpl.**java:74) >>> at >>> org.apache.tapestry5.ioc.**internal.**PerThreadOperationTracker.** >>> invoke(**PerThreadOperationTracker.**java:87) >>> at >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.invoke(** >>> RegistryImpl.java:1124) >>> at >>> org.apache.tapestry5.ioc.**internal.util.InternalUtils.** >>> createConstructorConstructionP**lan(InternalUtils.java:1480) >>> at >>> org.apache.tapestry5.ioc.**internal.**ConstructorServiceCreator.** >>> getPlan(**ConstructorServiceCreator.**java:52) >>> at >>> org.apache.tapestry5.ioc.**internal.**ConstructorServiceCreator.** >>> createObject(**ConstructorServiceCreator.**java:61) >>> at >>> org.apache.tapestry5.ioc.**internal.**OperationTrackingObjectCreator** >>> $1.invoke(**OperationTrackingObjectCreator**.java:45) >>> at >>> org.apache.tapestry5.ioc.**internal.OperationTrackerImpl.** >>> invoke(OperationTrackerImpl.**java:74) >>> at >>> org.apache.tapestry5.ioc.**internal.**PerThreadOperationTracker.** >>> invoke(**PerThreadOperationTracker.**java:87) >>> at >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.invoke(** >>> RegistryImpl.java:1124) >>> at >>> org.apache.tapestry5.ioc.**internal.**OperationTrackingObjectCreator** >>> .createObject(**OperationTrackingObjectCreator**.java:49) >>> at >>> org.apache.tapestry5.ioc.**internal.**SingletonServiceLifecycle.** >>> createService(**SingletonServiceLifecycle.**java:29) >>> at >>> org.apache.tapestry5.ioc.**internal.**LifecycleWrappedServiceCreator** >>> .createObject(**LifecycleWrappedServiceCreator**.java:46) >>> at >>> org.apache.tapestry5.ioc.**internal.AdvisorStackBuilder.**createObject(* >>> *AdvisorStackBuilder.java:63) >>> at >>> org.apache.tapestry5.ioc.**internal.**InterceptorStackBuilder.** >>> createObject(**InterceptorStackBuilder.java:**54) >>> at >>> org.apache.tapestry5.ioc.**internal.**RecursiveServiceCreationCheckW** >>> rapper.createObject(**RecursiveServiceCreationCheckW**rapper.java:60) >>> at >>> org.apache.tapestry5.ioc.**internal.**OperationTrackingObjectCreator** >>> $1.invoke(**OperationTrackingObjectCreator**.java:45) >>> at >>> org.apache.tapestry5.ioc.**internal.OperationTrackerImpl.** >>> invoke(OperationTrackerImpl.**java:74) >>> at >>> org.apache.tapestry5.ioc.**internal.**PerThreadOperationTracker.** >>> invoke(**PerThreadOperationTracker.**java:87) >>> at >>> org.apache.tapestry5.ioc.**internal.RegistryImpl.invoke(** >>> RegistryImpl.java:1124) >>> at >>> org.apache.tapestry5.ioc.**internal.**OperationTrackingObjectCreator** >>> .createObject(**OperationTrackingObjectCreator**.java:49) >>> at >>> org.apache.tapestry5.ioc.**internal.services.**JustInTimeObjectCreator.* >>> *obtainObjectFromCreator(**JustInTimeObjectCreator.java:**66) >>> at >>> org.apache.tapestry5.ioc.**internal.services.**JustInTimeObjectCreator.* >>> *createObject(**JustInTimeObjectCreator.java:**54) >>> at $ISCMailer_6d6446fae0659.**delegate(Unknown Source) >>> at $ISCyMailer_6d6446fae0659.**shutdown(Unknown Source) >>> at com.sc.ipk.services.**CoreModule$1.run(CoreModule.**java:100) >>> >> >> >> Shouldn't it be safe to invoke that method (shutdown) on an injected >> service since this is expected to run before the registry shuts down ? >> > > > -- > Thiago H. de Paula Figueiredo > > ------------------------------**------------------------------**--------- > To unsubscribe, e-mail: > users-unsubscribe@tapestry.**apache.org<users-unsubscr...@tapestry.apache.org> > For additional commands, e-mail: users-h...@tapestry.apache.org > >