/** * Add the passed lifecycle dependencies to the context * * @param context the context * @param depends the dependencies */ private void addDependencies(ServiceControllerContext context, Collection<ObjectName> depends) { DependencyInfo info = context.getDependencyInfo(); for (ObjectName other : depends) { info.addIDependOn(new LifecycleDependencyItem(context.getName(), other.getCanonicalName(), ControllerState.CREATE)); info.addIDependOn(new LifecycleDependencyItem(context.getName(), other.getCanonicalName(), ControllerState.START)); } }
public Object get(String name) throws Throwable { return getMBeanServer().getAttribute(objectName, getAttributeName(name)); }
/** * Safely remove any potentially registered context (usually after an error) * * @param ctx the context */ private void safelyRemoveAnyRegisteredContext(ServiceControllerContext ctx) { // First the context must have a controller Controller controller = ctx.getController(); if (controller != null) { // The name must be registered and it must be our context Object name = ctx.getName(); ControllerContext registered = controller.getContext(name, null); if (registered == ctx) controller.uninstall(name); } } }
public void installAction(ServiceControllerContext context) throws Throwable { Service service = context.getServiceProxy(); service.start(); context.getServiceContext().state = ServiceContext.RUNNING; ObjectName objectName = context.getObjectName(); ServiceController serviceController = context.getServiceController(); serviceController.sendControllerNotification(ServiceMBean.START_EVENT, objectName); }
public void uninstallAction(ServiceControllerContext context) { MBeanServer server = context.getServiceController().getMBeanServer(); ObjectName objectName = context.getObjectName(); ServiceCreator.uninstall(server, objectName); ServiceMetaData metaData = context.getServiceMetaData(); if (metaData != null) context.setTarget(null); } }
public void installAction(ServiceControllerContext context) throws Throwable { ServiceController controller = context.getServiceController(); ObjectName objectName = context.getObjectName(); // Configure any attributes ServiceMetaData metaData = context.getServiceMetaData(); if (metaData != null) { List<ServiceAttributeMetaData> attrs = metaData.getAttributes(); if (attrs.size() > 0) { ObjectName classLoaderName = metaData.getClassLoaderName(); ServiceConfigurator.configure(null, controller, objectName, classLoaderName, attrs); } } context.getServiceContext().state = ServiceContext.CONFIGURED; }
public void shutdown() { log.debug("Stopping " + installedOrder.size() + " services"); KernelController controller = kernel.getController(); int serviceCounter = 0; // Uninstall all the contexts we know about ListIterator<ServiceControllerContext> iterator = installedOrder.listIterator(installedOrder.size()); while (iterator.hasPrevious()) { ServiceControllerContext context = iterator.previous(); controller.uninstall(context.getName()); ++serviceCounter; } log.debug("Stopped " + serviceCounter + " services"); // Shutdown ourselves controller.uninstall(ServiceControllerMBean.OBJECT_NAME.getCanonicalName()); }
public void uninstallAction(ServiceControllerContext context) { MBeanServer server = context.getServiceController().getMBeanServer(); ObjectName objectName = context.getObjectName(); ServiceCreator.uninstall(server, objectName); context.setTarget(null); } }
/** * Change a context * * @param controller the controller * @param context the context * @param requiredState the require state * @param logWait log the waiting dependencies * @throws Throwable for any error */ private void doChange(KernelController controller, ServiceControllerContext context, ControllerState requiredState, String logWait) throws Throwable { if (ControllerMode.ON_DEMAND.equals(context.getMode()) == false) { controller.change(context, requiredState); ControllerState state = context.getState(); if (logWait != null && requiredState.equals(state) == false && state != ControllerState.ERROR) log.debug("Waiting in " + logWait + " of " + context.getObjectName() + " on " + getUnresolvedDependencies(context, requiredState)); } }
/** * Get the service context * * @return the service context */ public ServiceContext getServiceContext() { try { serviceContext.proxy = getServiceProxy(); } catch (Exception ignored) { } if (getError() != null) serviceContext.setProblem(getError()); if (getState() == ControllerState.ERROR) serviceContext.state = ServiceContext.FAILED; return serviceContext; }
/** * Unconfigure the mbean. * Unget values - releasing potential injections. * * @param context The ServiceControllerContext we are uninstalling */ public void uninstallAction(ServiceControllerContext context) { // Unconfigure any attributes ServiceMetaData metaData = context.getServiceMetaData(); if (metaData != null) { ServiceController controller = context.getServiceController(); ObjectName objectName = context.getObjectName(); List<ServiceAttributeMetaData> attrs = metaData.getAttributes(); if (attrs.size() > 0) { ObjectName classLoaderName = metaData.getClassLoaderName(); try { ServiceConfigurator.unconfigure(null, controller, objectName, classLoaderName, attrs); } catch (Exception ignored) { } } } } }
public List<ObjectName> install(List<ServiceMetaData> metaDatas, ObjectName loaderName) throws Exception { KernelController controller = kernel.getController(); // Track the registered mbeans both for returning the result // and uninstalling in the event of an error List<ObjectName> result = new ArrayList<ObjectName>(metaDatas.size()); List<ServiceControllerContext> contexts = new ArrayList<ServiceControllerContext>(metaDatas.size()); // Go through each mbean in the passed xml for (ServiceMetaData metaData : metaDatas) { metaData.setClassLoaderName(loaderName); // Install the context to the configured level ServiceControllerContext context = new ServiceControllerContext(this, metaData); try { doInstall(controller, context); contexts.add(context); doChange(controller, context, ControllerState.CONFIGURED, "configure"); result.add(context.getObjectName()); } catch (Throwable t) { // Something went wrong for (ServiceControllerContext ctx : contexts) safelyRemoveAnyRegisteredContext(ctx); throw rethrow("Error during install", t); } } return result; }
public ServiceContext getServiceContext(ObjectName serviceName) { ServiceControllerContext context = installed.get(serviceName); if (context != null) return context.getServiceContext(); return null; }
public void postRegister(Boolean registrationDone) { if (registrationDone == false) log.fatal("Registration of ServiceController failed"); else { // Register the ServiceController as a running service KernelController controller = kernel.getController(); ServiceControllerContext context = new ServiceControllerContext(this, ServiceControllerMBean.OBJECT_NAME); context.setMode(ControllerMode.AUTOMATIC); try { controller.install(context); } catch (Throwable t) { log.fatal("Error registering service controller", t); } } }
return null; Controller controller = context.getController(); ControllerStateModel model = controller.getStates(); ControllerState state = context.getState(); if (flag.installPhase)
lifecycleOps.put("destroy", new StateInfo(false, false, ControllerState.CONFIGURED)); ServiceController controller = context.getServiceController(); MBeanServer server = controller.getMBeanServer(); if (server != null) MBeanInfo info = server.getMBeanInfo(context.getObjectName()); MBeanOperationInfo[] ops = info.getOperations(); if (ops != null)
public Object invoke(String name, Object parameters[], String[] signature) throws Throwable { return getMBeanServer().invoke(objectName, name, parameters, signature); }
public void addDependency(DependencyItem dependency) { getDependencyInfo().addIDependOn(dependency); }
/** * Install an MBean without any meta data * * @param name the object name * @param object the mbean object * @throws Exception for any error */ public void install(ObjectName name, Object object) throws Exception { if (name == null) throw new IllegalArgumentException("Null name"); if (object == null) throw new IllegalArgumentException("Null object"); KernelController controller = kernel.getController(); ServiceControllerContext context = new ServiceControllerContext(this, name, object); try { doInstall(controller, context); doChange(controller, context, ControllerState.CONFIGURED, "configure"); } catch (Throwable t) { // Something went wrong safelyRemoveAnyRegisteredContext(context); throw rethrow("Error during install", t); } }
/** * Install a context * * @param controller the controller * @param context the context * @throws Throwable for any error */ private void doInstall(KernelController controller, ServiceControllerContext context) throws Throwable { controller.install(context); installed.put(context.getObjectName(), context); installedOrder.add(context); }