Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带注释的单例实例的guice injector getInstance_Java_Guice_Restlet - Fatal编程技术网

Java 带注释的单例实例的guice injector getInstance

Java 带注释的单例实例的guice injector getInstance,java,guice,restlet,Java,Guice,Restlet,我正在与Guice一起使用Restlet CachedThreadPool在my Guice中定义: @Provides @Singleton @Named("name0") public ExecutorService provideAutoDisconnectThreadPool () { return Executors.newCachedThreadPool(); } 希望在服务器停止时关闭线程池,因此在我的restlet.Application中,我使用injector获取实

我正在与Guice一起使用Restlet

CachedThreadPool在my Guice中定义:

@Provides
@Singleton
@Named("name0")
public ExecutorService provideAutoDisconnectThreadPool () {
    return Executors.newCachedThreadPool();
}
希望在服务器停止时关闭线程池,因此在我的restlet.Application中,我使用injector获取实例:

@Override
public void stop() throws Exception {
    LOGGER.info("stopping...");
    // shutdown threadPool
    injector.getInstance(ExecutorService.class).shutdown();
    super.stop();
    LOGGER.info("stopped");
}
但是,程序出现以下错误:

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)
那么,当应用程序停止时,我如何获取线程池实例。

命名的
是一个,因此本例中的注入键是
ExecutorService.class
@name0”)

这样,T getInstance(Key var1)就是解决方案,thx
injector.getInstance(Key.get(ExecutorService.class, Names.named("name0")))