Class WeldContainer

  • All Implemented Interfaces:
    Instance<Object>, SeContainer, Provider<Object>, AutoCloseable, Iterable<Object>, org.jboss.weld.environment.ContainerInstance, WeldInstance<Object>

    @Vetoed
    public class WeldContainer
    extends AbstractCDI<Object>
    implements AutoCloseable, org.jboss.weld.environment.ContainerInstance, SeContainer
    Represents a Weld SE container.

    An new instance can be initialized using the Weld builder:

     WeldContainer container = new Weld().initialize();
     

    It's also possible to obtain the instance of a running container by id:

     WeldContainer container = WeldContainer.instance("myCustomId");
     

    shutdown() must be always called to shutdown the container properly. AutoCloseable is implemented, so the container is automatically shut down when leaving the try-with-resources block:

     try (WeldContainer container = new Weld().initialize()) {
         container.select(Foo.class).get();
     }
     

    The container is also registered as a Singleton bean.

    Provides convenient access to beans, BeanManager and events, which is particularly helpful when bootstrapping an application in Java SE:

     Foo foo = container.select(Foo.class).get();
     container.getBeanManager().fireEvent(new Bar())
     container.event().select(Bar.class).fire(new Bar());
     
    Author:
    Peter Royle, Martin Kouba
    See Also:
    Weld
    • Method Detail

      • instance

        public static WeldContainer instance​(String id)
        Parameters:
        id -
        Returns:
        the running container with the specified identifier or null if no such container exists
      • current

        public static WeldContainer current()
        A convenient method for {@link CDI.current()}. Returns current WeldContainer instance if there is exactly one instance running. Throws IllegalStateException in any other case.
        Returns:
        Current WeldContainer instance if and only if exactly one instance exists
      • getRunningContainerIds

        public static List<String> getRunningContainerIds()
        Returns:
        an immutable list of ids of running containers
      • instance

        public Instance<Object> instance()
        Deprecated.
        Applications are encouraged to use methods for programmatic lookup directly.
        Provides access to all beans within the application. Retained for backward compatibility - WeldContainer implements .
        Returns:
        the instance
      • event

        public WeldEvent<Object> event()
        Provides access to all events within the application. For example: weldContainer.event().select(Bar.class).fire(new Bar());
        Returns:
        the event
      • getId

        public String getId()
        Weld containers must have a unique identifier assigned when there are multiple Weld instances running at once.
        Specified by:
        getId in interface org.jboss.weld.environment.ContainerInstance
        Returns:
        the container id
      • getBeanManager

        public BeanManager getBeanManager()
        Provides direct access to the BeanManager.
        Specified by:
        getBeanManager in interface org.jboss.weld.environment.ContainerInstance
        Specified by:
        getBeanManager in interface SeContainer
        Specified by:
        getBeanManager in class CDI<Object>
        Returns:
        the BeanManager
      • shutdown

        public void shutdown()
        Shutdown the container.
        Specified by:
        shutdown in interface org.jboss.weld.environment.ContainerInstance
        See Also:
        Weld.initialize()
      • isRunning

        public boolean isRunning()
        Description copied from interface: SeContainer
        Check if the container is running or was shut down
        Specified by:
        isRunning in interface SeContainer
        Returns:
        true if the container was initialized completely and is not shut down yet, false otherwise
      • checkState

        protected void checkState()
        Description copied from class: AbstractCDI
        Check whether the container is in a "valid" state, no-op by default.

        Subclasses are allowed to override the default behavior, i.e. to check whether a container is running.

        Overrides:
        checkState in class AbstractCDI<Object>