Perhaps you would be interested in the other threads that have been going on where we discuss InheritableThreadLocal. In there Jeremy gave a good solution that would fix what you're seeing. Basically, you use the beforeExecute()/afterExecute() methods to set/clear the Application's ThreadLocal variable so that it's available during the execution of the task.
On Fri, May 28, 2010 at 12:01 PM, Douglas Ferguson <doug...@douglasferguson.us> wrote: > I'm still spinning my wheels on this one. > > Let me try to explain better.. > > On the page I have > > @Inject DAOFactory > @Inject MyService > > On the DAOFactory I have > > @Inject DAO1 > @Inject DAO2 > etc... > > On MyService I have > > @Inject DAO1 > > In my module I have > > bind(MyService.class).toInstance(new MyService()); > bind(IDAOFactory.class).to(DAOFactory.class).in(Singleton.class); > bind(DAO1.class).in(Singleton.class); > bind(DAO2.class).in(Singleton.class); > > On the page I also have: > > genericWorkPool.submit(new Runnable() { > > @Override > public void run() { > try { > //Do stuff with DAOFactory -- works > //Do stuff with MyService -- Blow ups <<<---- See > exception below > } catch (Throwable t) { > log.error("Error sending email on Signup: " + t.getMessage(), t); > } > } > } > > This is the error I get > > org.apache.wicket.WicketRuntimeException: There is no application attached to > current thread pool-13-thread-3 > at org.apache.wicket.Application.get(Application.java:179) > at > org.apache.wicket.guice.GuiceProxyTargetLocator.locateProxyTarget(GuiceProxyTargetLocator.java:73) > at > org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:317) > at > WICKET_com.conducive.logic.buzzbox.BuzzboxEmailGenerator$$EnhancerByCGLIB$$1171cfab.generateFor(<generated>) > <-- this is "MyService" > > I can't understand why DAOFactory would work ok but MyService wouldn't. > > > On May 27, 2010, at 6:53 PM, Douglas Ferguson wrote: > > I'm using 1.4.8 (not the ITL version). > > I have pass a runnable to an executer, how can I make use of classes that use > @Inject? > > When I try to do so, it blows up saying "There is no application attached to > current thread pool-13-thread-1" > > The confusing thing is that I inject 2 DAOs and 1 service. The 2DAOs work > just fine but the service blows up. > > I've tried these combinations: > > 1) @Inject into the page and then pass the reference to the constructor of > the runnable > 2) Construct the service in the Runnable and call > @InjectorHolder.getInjector().inject(service) > > Neither works. > > D/ > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org