/**
  * Gets the {@link BeanManager} for a given bean deployment archive id.
  *
  * @throws IllegalStateException if the container is not running
  * @throws IllegalArgumentException if the bean deployment archive id is not found
  */
 public BeanManagerImpl getBeanManager(String beanArchiveId) {
   if (!started) {
     throw WeldMessages.MESSAGES.notStarted("WeldContainer");
   }
   BeanDeploymentArchive beanDeploymentArchive = beanDeploymentArchives.get(beanArchiveId);
   if (beanDeploymentArchive == null) {
     throw WeldMessages.MESSAGES.beanDeploymentNotFound(beanArchiveId);
   }
   return bootstrap.getManager(beanDeploymentArchive);
 }
Beispiel #2
0
  /**
   * Bootstraps a new Weld SE container with the current {@link #containerId}.
   *
   * <p>The container must be shut down properly when an application is stopped. Applications are
   * encouraged to use the try-with-resources statement or invoke {@link WeldContainer#shutdown()}
   * explicitly.
   *
   * <p>However, a shutdown hook is also registered during initialization so that all running
   * containers are shut down automatically when a program exits or VM is terminated. This means
   * that it's not necessary to implement the shutdown logic in a class where a main method is used
   * to start the container.
   *
   * @return the Weld container
   * @see #enableDiscovery()
   * @see WeldContainer#shutdown()
   */
  public WeldContainer initialize() {
    // If also building a synthetic bean archive the check for beans.xml is not necessary
    if (!isSyntheticBeanArchiveRequired()
        && resourceLoader.getResource(WeldDeployment.BEANS_XML) == null) {
      throw CommonLogger.LOG.missingBeansXml();
    }

    final WeldBootstrap bootstrap = new WeldBootstrap();
    final Deployment deployment = createDeployment(resourceLoader, bootstrap);

    final ExternalConfigurationBuilder configurationBuilder =
        new ExternalConfigurationBuilder()
            // weld-se uses CommonForkJoinPoolExecutorServices by default
            .add(EXECUTOR_THREAD_POOL_TYPE.get(), COMMON.toString())
            // weld-se uses relaxed construction by default
            .add(ConfigurationKey.RELAXED_CONSTRUCTION.get(), true);
    for (Entry<String, Object> property : properties.entrySet()) {
      configurationBuilder.add(property.getKey(), property.getValue());
    }
    deployment.getServices().add(ExternalConfiguration.class, configurationBuilder.build());

    // Set up the container
    bootstrap.startContainer(containerId, Environments.SE, deployment);
    // Start the container
    bootstrap.startInitialization();
    // Bean builders - set bean deployment finder
    if (!beanBuilders.isEmpty()) {
      BeanDeploymentFinder beanDeploymentFinder = bootstrap.getBeanDeploymentFinder();
      for (BeanBuilderImpl<?> beanBuilder : beanBuilders) {
        beanBuilder.setBeanDeploymentFinder(beanDeploymentFinder);
      }
    }
    bootstrap.deployBeans();
    bootstrap.validateBeans();
    bootstrap.endInitialization();

    final WeldManager manager =
        bootstrap.getManager(deployment.loadBeanDeploymentArchive(WeldContainer.class));
    final WeldContainer weldContainer = WeldContainer.initialize(containerId, manager, bootstrap);

    initializedContainers.put(containerId, weldContainer);
    return weldContainer;
  }
 /**
  * Gets the {@link BeanManager} linked to the root bean deployment archive. This BeanManager has
  * access to all beans in a deployment
  *
  * @throws IllegalStateException if the container is not running
  */
 public BeanManager getBeanManager() {
   if (!started) {
     throw WeldMessages.MESSAGES.notStarted("WeldContainer");
   }
   return bootstrap.getManager(rootBeanDeploymentArchive);
 }
 /**
  * Gets the {@link BeanManager} linked to the root bean deployment archive. This BeanManager has
  * access to all beans in a deployment
  *
  * @throws IllegalStateException if the container is not running
  */
 public BeanManagerImpl getBeanManager() {
   if (!started) {
     throw WeldLogger.ROOT_LOGGER.notStarted("WeldContainer");
   }
   return bootstrap.getManager(rootBeanDeploymentArchive);
 }