public void undeploy(DeploymentUnit unit, ServiceMetaData deployment) { ObjectName name = deployment.getObjectName(); ControllerContext serviceContext = getControllerContext(name); if (serviceContext != null) removeContext(serviceContext, unit.getParent()); ServiceContext context = controller.getServiceContext(name); if (context != null) { stop(name); destroy(name); remove(name); } }
/** * Create a new ServiceDeployer. * * @param controller the service controller * @throws IllegalArgumentException for a null controller */ public ServiceDeployer(ServiceController controller) { super(ServiceMetaData.class); if (controller == null) throw new IllegalArgumentException("Null controller"); this.controller = controller; setComponentsOnly(true); setUseUnitName(true); }
loaderName = findLoaderName(unit.getClassLoader()); try create(context); try start(context); Throwable t = context.getProblem(); if (t != null) destroy(name); throw t; remove(name); throw t; ControllerContext serviceContext = getControllerContext(name); if (serviceContext != null) putContext(serviceContext, unit.getParent()); // we're component, use parent
/** * Find first RealClassLoader instance * and return its ObjectName. * If none is found return defaultClassloader. * * @param cl the classloader * @return classloader's ObjectName */ protected ObjectName findLoaderName(ClassLoader cl) { if (cl == null) return defaultClassLoader; if (cl instanceof RealClassLoader) { RealClassLoader rcl = RealClassLoader.class.cast(cl); return rcl.getObjectName(); } return findLoaderName(cl.getParent()); }