private void transition(State targetState) { // Short-circuit if the service is already at the target state if (this.controller.getState() == targetState) return; StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(this.controller); try { // Force service to transition to desired state Mode targetMode = modeToggle.get(targetState).get(this.controller.getMode()); if (targetMode != null) { this.controller.setMode(targetMode); } monitor.awaitStability(); if (this.controller.getState() == ServiceController.State.START_FAILED) { throw new IllegalStateException(this.controller.getStartException()); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { monitor.removeController(this.controller); } } }
ServiceController<?> controller = builder.setInitialMode(this.mode).install(); StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try {
final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try {
@Override public void run() { StabilityMonitor monitor = new StabilityMonitor(); for (ServiceController controller : serviceControllers) { monitor.addController(controller);
/** * Wait for the required service to start up and fail otherwise. This method is necessary when a runtime operation * uses a service that might have been created within a composite operation. * * This method will wait at most 100 millis. * * @param controller the service to wait for * @throws OperationFailedException if the service is not available, or the thread was interrupted. */ private static void waitForService(final ServiceController<?> controller) throws OperationFailedException { if (controller.getState() == ServiceController.State.UP) return; final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try { monitor.awaitStability(100, MILLISECONDS); } catch (final InterruptedException e) { Thread.currentThread().interrupt(); throw SecurityLogger.ROOT_LOGGER.interruptedWaitingForSecurityDomain(controller.getName().getSimpleName()); } finally { monitor.removeController(controller); } if (controller.getState() != ServiceController.State.UP) { throw SecurityLogger.ROOT_LOGGER.requiredSecurityDomainServiceNotAvailable(controller.getName().getSimpleName()); } }
.addDependency(getServiceNameBase(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector()); final ServiceController<?> binderServiceController = builder.install(); final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(binderServiceController); try {
public void unbind(final Name name) throws NamingException { requireOwner(); final ServiceName bindName = buildServiceName(name); final ServiceController<?> controller = getServiceRegistry().getService(bindName); if (controller == null) { throw NamingLogger.ROOT_LOGGER.cannotResolveService(bindName); } controller.setMode(ServiceController.Mode.REMOVE); final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try { monitor.awaitStability(); } catch (Exception e) { throw namingException("Failed to unbind [" + bindName + "]", e); } finally { monitor.removeController(controller); } }
protected final StabilityMonitor getStabilityMonitor() { if (stabilityMonitor == null) { stabilityMonitor = new StabilityMonitor(); } return stabilityMonitor; }
protected final StabilityMonitor getStabilityMonitor() { if (stabilityMonitor == null) { stabilityMonitor = new StabilityMonitor(); } return stabilityMonitor; }
private LiveOakFactory(File configDir, File applicationsDir, Vertx vertx, String bindAddress, ServiceContainer serviceContainer, ServiceTarget serviceTarget) { this.configDir = configDir; this.appsDir = applicationsDir; this.vertx = vertx; this.bindAddress = bindAddress; this.serviceContainer = serviceContainer; this.serviceTarget = serviceTarget; this.serviceTarget.addListener(new AbstractServiceListener<Object>() { @Override public void transition(ServiceController<?> controller, ServiceController.Transition transition) { if (transition.getAfter().equals(ServiceController.Substate.START_FAILED)) { log.errorf(controller.getStartException(), "Unable to start service: %s", controller.getName()); } } }); this.stabilityMonitor = new StabilityMonitor(); this.serviceTarget.addMonitor(this.stabilityMonitor); }
private void transition(State targetState) { // Short-circuit if the service is already at the target state if (this.controller.getState() == targetState) return; StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(this.controller); try { // Force service to transition to desired state Mode targetMode = modeToggle.get(targetState).get(this.controller.getMode()); if (targetMode != null) { this.controller.setMode(targetMode); } monitor.awaitStability(); if (this.controller.getState() == ServiceController.State.START_FAILED) { throw new IllegalStateException(this.controller.getStartException()); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { monitor.removeController(this.controller); } } }
public void load(String id, Extension extension, ObjectNode config, ExtensionConfigurationManager extensionConfigManager) throws Exception { ServiceName configManagerName = Services.systemConfigurationManager(id); target.addService(configManagerName, new ValueService<>(new ImmediateValue<>(extensionConfigManager))).install(); target.addService(Services.systemEnvironmentProperties(id), new ValueService<>(new ImmediateValue<>(envProperties()))).install(); StabilityMonitor monitor = new StabilityMonitor(); ServiceTarget target = this.target.subTarget(); target.addMonitor(monitor); ExtensionService extensionService = new ExtensionService(id, extension, config, extensionConfigManager); ServiceBuilder builder = target.addService(Services.extension(id), extensionService); JsonNode deps = config.get("dependencies"); if (deps != null) { for (JsonNode node : deps) { builder.addDependency(Services.extension(node.asText())); } } builder.install(); monitor.awaitStability(); }
@Override public void close() { if (ROOT_LOGGER.isTraceEnabled()) { ROOT_LOGGER.tracef("stop second level cache by removing dependency on service '%s'", this.controller.getName().getCanonicalName()); } StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(this.controller); this.controller.setMode(ServiceController.Mode.REMOVE); try { monitor.awaitStability(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { monitor.removeController(this.controller); } } }
@Override public void close() { if (ROOT_LOGGER.isTraceEnabled()) { ROOT_LOGGER.tracef("stop second level cache by removing dependency on service '%s'", this.controller.getName().getCanonicalName()); } StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(this.controller); this.controller.setMode(ServiceController.Mode.REMOVE); try { monitor.awaitStability(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { monitor.removeController(this.controller); } } }
public InternalApplicationExtension extend(String extensionId, String resourceId, ObjectNode configuration, boolean boottime) throws Exception { ServiceTarget target = this.target.subTarget(); StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); ServiceName resourceServiceName = Services.applicationExtension(this.id, resourceId); ApplicationExtensionService appExt = new ApplicationExtensionService(extensionId, resourceId, configuration, boottime); ServiceController<InternalApplicationExtension> controller = target.addService(resourceServiceName, appExt) .addDependency(Services.extension(extensionId), Extension.class, appExt.extensionInjector()) .addDependency(Services.application(this.id), InternalApplication.class, appExt.applicationInjector()) .addDependency(Services.SERVICE_REGISTRY, ServiceRegistry.class, appExt.serviceRegistryInjector()) .install(); monitor.awaitStability(); InternalApplicationExtension intAppExt = controller.awaitValue(); if (intAppExt.exception() != null) { intAppExt.remove(); log.error(intAppExt.exception()); throw intAppExt.exception(); } target.removeMonitor(monitor); return intAppExt; }
public synchronized void start(final StartContext context) throws StartException { ServiceTarget target = context.getChildTarget(); final String deploymentName = context.getController().getName().getSimpleName(); monitor = new StabilityMonitor(); monitor.addController(context.getController()); // Create the first phase deployer deploymentUnit = createAndInitializeDeploymentUnit(context.getController().getServiceContainer()); final String managementName = deploymentUnit.getAttachment(Attachments.MANAGEMENT_NAME); if (deploymentUnit.getParent()==null) { ServerLogger.DEPLOYMENT_LOGGER.startingDeployment(managementName, deploymentName); } else { ServerLogger.DEPLOYMENT_LOGGER.startingSubDeployment(deploymentName); } final ServiceName serviceName = deploymentUnit.getServiceName().append(FIRST_PHASE_NAME); final Phase firstPhase = Phase.values()[0]; final DeploymentUnitPhaseService<?> phaseService = DeploymentUnitPhaseService.create(deploymentUnit, firstPhase); final ServiceBuilder<?> phaseServiceBuilder = target.addService(serviceName, phaseService); phaseServiceBuilder.addDependency(Services.JBOSS_DEPLOYMENT_CHAINS, DeployerChains.class, phaseService.getDeployerChainsInjector()); phaseServiceBuilder.install(); }
@Override public void start(StartContext context) throws StartException { ServiceTarget target = context.getChildTarget(); InternalApplicationExtension appExtension = this.appExtensionServiceController.getValue(); ApplicationExtensionContextImpl extensionContext = new ApplicationExtensionContextImpl( target, appExtension, null, null, JsonNodeFactory.instance.objectNode(), false); StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); try { this.extensionInjector.getValue().unextend(extensionContext); context.complete(); monitor.awaitStability(); } catch (Exception e) { throw new StartException(e); } // remove ourselves context.getController().setMode(ServiceController.Mode.REMOVE); }
public void unbind(final Name name) throws NamingException { requireOwner(); final ServiceName bindName = buildServiceName(name); final ServiceController<?> controller = getServiceRegistry().getService(bindName); if (controller == null) { throw NamingLogger.ROOT_LOGGER.cannotResolveService(bindName); } controller.setMode(ServiceController.Mode.REMOVE); final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try { monitor.awaitStability(); } catch (Exception e) { throw namingException("Failed to unbind [" + bindName + "]", e); } finally { monitor.removeController(controller); } }
public void unbind(final Name name) throws NamingException { requireOwner(); final ServiceName bindName = buildServiceName(name); final ServiceController<?> controller = getServiceRegistry().getService(bindName); if (controller == null) { throw NamingLogger.ROOT_LOGGER.cannotResolveService(bindName); } controller.setMode(ServiceController.Mode.REMOVE); final StabilityMonitor monitor = new StabilityMonitor(); monitor.addController(controller); try { monitor.awaitStability(); } catch (Exception e) { throw namingException("Failed to unbind [" + bindName + "]", e); } finally { monitor.removeController(controller); } }
@Override public void start(StartContext context) throws StartException { ServiceTarget target = context.getChildTarget(); StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); File appDir = this.appServiceController.getValue().directory(); try { context.asynchronous(); this.appServiceController.setMode(ServiceController.Mode.REMOVE); new Thread("ApplicationRemovalService worker thread") { public void run() { try { FileHelper.deleteNonEmpty(appDir.getAbsoluteFile()); context.complete(); } catch (Throwable e) { context.failed(new StartException("Unable to remove application directory: " + appDir.getAbsolutePath(), e)); } } }.start(); monitor.awaitStability(); target.removeMonitor(monitor); } catch (Exception e) { throw new StartException(e); } // remove ourselves context.getController().setMode(ServiceController.Mode.REMOVE); }