J'utilise Restlet avec Guice.injecteur de guice getInstance d'instance singleton annotée
Un CachedThreadPool est definded dans mon Guice:
@Provides
@Singleton
@Named("name0")
public ExecutorService provideAutoDisconnectThreadPool() {
return Executors.newCachedThreadPool();
}
Voulait arrêter le Threadpool lorsque le serveur est arrête, donc dans mon restlet.Application, j'utilise l'injecteur pour obtenir l'instance:
@Override
public void stop() throws Exception {
LOGGER.info("stopping...");
// shutdown threadPool
injector.getInstance(ExecutorService.class).shutdown();
super.stop();
LOGGER.info("stopped");
}
Cependant, le programme a obtenu l'erreur avec:
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for java.util.concurrent.ExecutorService was bound.
while locating java.util.concurrent.ExecutorService
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
Alors, comment puis-je obtenir la instance threadPool lorsque l'application s'arrête.
qui fonctionne, T getInstance (Key var1) est la solution, thx –
RTzhong