@Override public void run() { Run.this.stop(); } });
/** * Add a service that will be managed on startup. Typically you create services by @Injecting the * Services object and calling add(this). Must be called before start. */ public void add(Service service) { checkNotStarted(); services.add(service); }
@Inject public WebServerService(Services services, WebServer server) { this.server = server; services.add(this); }
@Override protected void configureServlets() { install(new ServicesModule()); bind(WebServerService.class).asEagerSingleton(); } }
/** * Create a service manager from the present data. This should be done only once. */ ServiceManager makeServiceManager() { assert !done; done = true; ServiceManager serviceManager = new ServiceManager(services); serviceManager.addListener(new ServiceManagerListener(), MoreExecutors.directExecutor()); for (ServiceManager.Listener listener : serviceManagerListeners) { serviceManager.addListener(listener, MoreExecutors.directExecutor()); } for (Service service : services) { service.addListener(new LoggingServiceListener(service), MoreExecutors.directExecutor()); for (Service.Listener listener : serviceListeners) { service.addListener(listener, MoreExecutors.directExecutor()); } } return serviceManager; } }
@Provides @Singleton public ServiceManager serviceManager(Services services) { return services.makeServiceManager(); } }
@Inject public HealthChecksService(Services services, HealthChecksConfig config, HealthChecks healthChecks) { this.config = config; this.healthChecks = healthChecks; // No need to start it up if we're not configured if (config.getInterval() != null) services.add(this); }
@Override protected void configure() { install(new ServicesModule()); bind(HealthChecksService.class).asEagerSingleton(); }
/** * Add a listener to the servicemanager. Must be called before start. */ public void add(ServiceManager.Listener listener) { checkNotStarted(); serviceManagerListeners.add(listener); }
@Inject public MetricsService(Services services, MetricRegistry metricRegistry) { this.metricRegistry = metricRegistry; metricRegistry.register("jvm.buffers", new BufferPoolMetricSet(ManagementFactory.getPlatformMBeanServer())); metricRegistry.register("jvm.gc", new GarbageCollectorMetricSet()); metricRegistry.register("jvm.memory", new MemoryUsageGaugeSet()); metricRegistry.register("jvm.threads", new ThreadStatesGaugeSet()); services.add(this); }
@Override protected void configure() { install(new ServicesModule()); bind(MetricRegistry.class).toInstance(metricRegistry); install(new MetricsInstrumentationModule(metricRegistry)); bind(MetricsService.class).asEagerSingleton(); } }
/** * Add a listener that will apply to every service. Must be called before start. */ public void add(Service.Listener listener) { checkNotStarted(); serviceListeners.add(listener); }