/** * Starts the weld container * * @throws IllegalStateException if the container is already running */ public synchronized void start(final StartContext context) { if (started) { throw WeldLogger.ROOT_LOGGER.alreadyRunning("WeldContainer"); } started = true; WeldLogger.DEPLOYMENT_LOGGER.startingWeldService(deploymentName); // set up injected services addWeldService(SecurityServices.class, securityServices.getValue()); addWeldService(TransactionServices.class, weldTransactionServices.getValue()); if (!deployment.getServices().contains(ExecutorServices.class)) { addWeldService(ExecutorServices.class, executorServices.getValue()); } ModuleGroupSingletonProvider.addClassLoaders( deployment.getModule().getClassLoader(), deployment.getSubDeploymentClassLoaders()); ClassLoader oldTccl = WildFlySecurityManager.getCurrentContextClassLoaderPrivileged(); try { WildFlySecurityManager.setCurrentContextClassLoaderPrivileged( deployment.getModule().getClassLoader()); bootstrap.startContainer(deploymentName, environment, deployment); WeldProvider.containerInitialized( Container.instance(deploymentName), getBeanManager(), deployment); } finally { WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(oldTccl); } }
/** * Stops the container * * @throws IllegalStateException if the container is not running */ public synchronized void stop(final StopContext context) { if (!started) { throw WeldLogger.ROOT_LOGGER.notStarted("WeldContainer"); } WeldLogger.DEPLOYMENT_LOGGER.stoppingWeldService(deploymentName); ClassLoader oldTccl = WildFlySecurityManager.getCurrentContextClassLoaderPrivileged(); try { WildFlySecurityManager.setCurrentContextClassLoaderPrivileged( deployment.getModule().getClassLoader()); WeldProvider.containerShutDown(Container.instance(deploymentName)); bootstrap.shutdown(); } finally { WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(oldTccl); ModuleGroupSingletonProvider.removeClassLoader(deployment.getModule().getClassLoader()); } started = false; }