当前位置: 首页 > 知识库问答 >
问题:

如何将Guava ServiceManager与Guice Injection结合使用

强宾白
2023-03-14

如本文所述,Guava ServiceManager可通过以下方式获得:

ServiceManager manager = injector.getInstance(ServiceManager.class);

为了实现这一点,我在Guice模块中添加了以下内容:

@Provides
public Set<Service> services(){
    return ImmutableSet.<Service>of(MyService());
}

在我的主课上,

ServiceManager manager = injector.getInstance(ServiceManager.class);
manager.startAsync().awaitHealthy();

如何获取已启动服务的实例?

附言:将服务设置为@Singleton感觉就像一个黑客。

共有2个答案

邓禄
2023-03-14

在我看来,将服务设置为@Singleton根本不是黑客。这可能就是我要做的。

@Provides @Singleton
public MyService myService() {
  return new MyService();
}

@Provides
public Set<Service> services(MyService myService) {
  return ImmutableSet.<Service>of(myService);
}

然后,您可以在任何想要的地方注入任何特定的服务实例。

白宏义
2023-03-14

服务管理器。getServicesByState()。get(RUNNING)返回正在运行的服务和服务管理器。getServicesByState()。values()返回ServiceManager管理的所有服务。

 类似资料:
  • 问题内容: 我正在尝试开发一个JMS 独立应用程序 来读写MQSeries上的Queue。我的老板要求我使用 纯Java JMS (而不是ibm.mq lib)来执行此操作。 这是建立jms连接所需的信息: 您知道该怎么做?还是您有任何链接教我做到这一点。 问题答案: 这里的问题是“我的老板要求我使用纯Java JMS(不是ibm.mq lib)来做到这一点”的要求。JMS是一个规范,每个实现都必

  • 问题内容: 我正在尝试使用node.js制作Samsung Smart TV应用程序。 在我的项目中,我想使我的应用程序与服务器PC通信。 根据许多网站,我可以使用“ jsonp”来做到这一点。 这是我发现的客户端代码。 而且,这是我发现的服务器端代码。 这些代码在我的PC(服务器PC)上正常工作,但是当我在其他计算机上打开客户端页面时,它不起作用。 控制台只给我这个日志: 我想使用jsonp处理

  • 我想用Netty ChannelHandler用Gzip压缩和解压,我试了一段时间,但总是有点困难。我的代码如下: 有什么问题吗?

  • 问题内容: 如何创建使芹菜任务看起来像的包装器?还是有更好的方法与Celery集成? Celery的创建者@asksol这样说: 将Celery用作异步I / O框架之上的分布式层是很常见的(提示:将CPU绑定的任务路由到prefork worker意味着它们不会阻塞事件循环)。 但是我找不到任何专门针对框架的代码示例。 问题答案: 如官方网站上所述,这可以通过Celery 5.0版实现: htt

  • 问题内容: 我有一个带有MySQL的远程数据库,并且将我的应用程序用户的照片存储在数据库中,作为LONGTEXT类型的数据库的一行。 我使用Base64将照片转换为字符串。 我使用JSON和PHP连接到远程数据库,因此,我必须使用Base64,因为据我所知,JSON和PHP需要在参数上发送字符串,而使用Base64可以将照片转换为字符串。 可以,但是非常慢。当我加载100 KB的照片时,会花费很多

  • 问题内容: 我目前正在使用Electron和MongoDB构建一个桌面应用程序。此应用程序的目的是在应用程序的本地范围内(而不是在服务器上)收集和存储各种客户的信息。我已经使用node.js对MongoDB进行了一些研究;但是我还没有找到在Electron中使用它的方法。 问题答案: 这是用于MongoDB管理的电子应用程序,您可以检查代码作为如何使用mongodb和electronic的示例。