Package com.sun.ejb

Interface Container

All Known Implementing Classes:
AbstractSingletonContainer, BaseContainer, BMCSingletonContainer, CMCSingletonContainer, StatefulSessionContainer, StatelessSessionContainer

public interface Container
A Container stores EJB instances and is responsible for the lifecycle, state management, concurrency, transactions, security, naming, resource management, etc. It does the above by interposing actions before and after invocations on EJBs. It uses the ProtocolManager, SecurityManager, TransactionManager, NamingManager for help with the above responsibilities.

Note: the term "Container" here refers to an instance of one of the above container classes. In the EJB spec "container" refers to a process or JVM which hosts EJB instances.

There is one instance of the Container for each EJB type (deployment desc). When a JAR is deployed on the EJB server, a Container instance is created for each EJB declared in the ejb-jar.xml for the EJB JAR.

The Container interface provides methods called from other parts of the server as well as from generated EJBHome/EJBObject implementations.

  • Field Details

  • Method Details

    • getTargetObject

      Remote getTargetObject(byte[] instanceKey, String remoteBusinessIntf)
      Return the EJBObject/EJBHome for the given instanceKey.
      Parameters:
      remoteBusinessIntf - True if this invocation is for the RemoteHome view of the bean. False if for the RemoteBusiness view. Called from the ProtocolManager when a remote invocation arrives.
    • releaseTargetObject

      void releaseTargetObject(Remote remoteObj)
      Release the EJBObject/EJBHome object. Called from the ProtocolManager after a remote invocation completes.
    • externalPreInvoke

      void externalPreInvoke()
      Performs pre external invocation setup such as setting application context class loader. Called by getTargetObject() and web service inv
    • externalPostInvoke

      void externalPostInvoke()
      Performs post external invocation cleanup such as restoring the original class loader. Called by releaseTargetObject() and web service inv
    • getEJBObjectForPrimaryKey

      jakarta.ejb.EJBObject getEJBObjectForPrimaryKey(Object pkey)
      Obtain an Entity EJBObject corresponding to the primary key. Used by the PersistenceManager.
    • getEJBLocalObjectForPrimaryKey

      jakarta.ejb.EJBLocalObject getEJBLocalObjectForPrimaryKey(Object pkey, jakarta.ejb.EJBContext ctx)
      Obtain an Entity EJBLocalObject corresponding to the primary key. Used by the PersistenceManager.
    • getEJBLocalObjectForPrimaryKey

      jakarta.ejb.EJBLocalObject getEJBLocalObjectForPrimaryKey(Object pkey)
    • assertValidLocalObject

      void assertValidLocalObject(Object o) throws jakarta.ejb.EJBException
      Verify that a given object is an EJBLocalObject of an ejb from this ejb container. The given object must be an EJBLocalObject and have the same ejb type ( meaning same ejb-jar and same ejb-name ) as this container. Note that for entity beans this equality check is independent of primary key.
      Throws:
      jakarta.ejb.EJBException - Thrown when the assertion fails.
    • assertValidRemoteObject

      void assertValidRemoteObject(Object o) throws jakarta.ejb.EJBException
      Verify that a given object is an EJBObject of an ejb from this ejb container. The given object must be an EJBObject and have the same ejb type ( meaning same ejb-jar and same ejb-name ) as this container. Note that for entity beans this equality check is independent of primary key.
      Throws:
      jakarta.ejb.EJBException - Thrown when the assertion fails.
    • removeBeanUnchecked

      void removeBeanUnchecked(jakarta.ejb.EJBLocalObject bean)
      Remove a bean. Used by the PersistenceManager.
    • removeBeanUnchecked

      void removeBeanUnchecked(Object pkey)
      Remove a bean given primary key. Used by the PersistenceManager.
    • preSelect

      void preSelect() throws jakarta.ejb.EJBException
      Notification from persistence manager than an ejbSelect query is about to be invoked on a bean of the ejb type for this container. This allows the ejb container to perform the same set of actions as take place before a finder method, such as calling ejbStore on bean instances. (See EJB 2.1, Section 10.5.3 ejbFind,ejbStore)
      Throws:
      jakarta.ejb.EJBException - Thrown if an error occurs during the preSelect actions performed by the container. If thrown, the remaining select query steps should be aborted and an EJBException should be propagated back to the application code.
    • preInvoke

      void preInvoke(EjbInvocation inv)
      Called by the EJB(Local)Object/EJB(Local)Home before an invocation on a bean.
    • postInvoke

      void postInvoke(EjbInvocation inv)
      Called by the EJB(Local)Object/EJB(Local)Home after an invocation on a bean.
    • webServicePostInvoke

      void webServicePostInvoke(EjbInvocation inv)
      Called by webservice code to do ejb invocation post processing.
    • postCreate

      void postCreate(EjbInvocation inv, Object primaryKey) throws jakarta.ejb.CreateException
      Called by the EJB(Local)Home after invoking ejbCreate on an EntityBean. After this postCreate the EJB(Local)Home can call ejbPostCreate on the EntityBean.
      Parameters:
      primaryKey - the value returned from ejbCreate.
      Throws:
      jakarta.ejb.CreateException
    • postFind

      Object postFind(EjbInvocation inv, Object primaryKeys, Object[] findParams) throws jakarta.ejb.FinderException
      Called by the EJB(Local)Home after invoking ejbFind* on an EntityBean.
      Parameters:
      primaryKeys - the primaryKey or collection of primaryKeys (Collection/Enumeration) returned from ejbFind.
      findParams - the parameters to the ejbFind method.
      Returns:
      an EJBObject reference or Collection/Enumeration of EJBObjects.
      Throws:
      jakarta.ejb.FinderException
    • getEjbDescriptor

      EjbDescriptor getEjbDescriptor()
      Returns:
      the EjbDescriptor containing deployment information for the EJB type corresponding to this Container instance.
    • getEJBMetaData

      jakarta.ejb.EJBMetaData getEJBMetaData()
      Returns:
      the MetaData for this EJB type.
    • getClassLoader

      ClassLoader getClassLoader()
      Returns:
      the classloader of this container instance.
    • getEJBHome

      jakarta.ejb.EJBHome getEJBHome()
      Returns:
      the EJBHome object reference for this container instance.
    • getSecurityManager

      com.sun.enterprise.security.SecurityManager getSecurityManager()
      Returns:
      A SecurityManager object for this container.
    • userTransactionMethodsAllowed

      boolean userTransactionMethodsAllowed(org.glassfish.api.invocation.ComponentInvocation inv)
      EJB spec makes a distinction between access to the UserTransaction object itself and access to its methods. getUserTransaction covers the first check and this method covers the second. It is called by the UserTransaction implementation to verify access.
    • doAfterBegin

      void doAfterBegin(org.glassfish.api.invocation.ComponentInvocation ci)
      Called from the TM when an EJB with Bean-Managed transactions starts a tx
    • startApplication

      void startApplication(boolean deploy)
      Called after all the components in the container's application have loaded successfully. Allows containers to delay any instance creation or external invocations until the second phase of deployment. Note that this callback occurs at a point that is still considered within deployment. Failures should still still be treated as a deployment error.
      Parameters:
      deploy - true if this method is called during application deploy
    • undeploy

      void undeploy()
      Called from EJB JarManager when an application is undeployed.
    • onReady

      void onReady()
      Called when server instance is Ready
    • onEnteringContainer

      void onEnteringContainer()
      Called when the request started it's processing in the container
    • onLeavingContainer

      void onLeavingContainer()
      Called when the request finished it's processing in the container
    • onShutdown

      void onShutdown()
      Called when server instance is shuting down
    • onTermination

      void onTermination()
      Called when server instance is terminating. This method is the last one called during server shutdown.
    • getComponentId

      String getComponentId()
      Called from NamingManagerImpl during java:comp/env lookup.
    • setStartedState

      void setStartedState()
      Start servicing invocations for EJB instances in this Container.
    • setStoppedState

      void setStoppedState()
      Stop servicing invocations for EJB instances in this Container. Subsequent EJB invocations will receive exceptions. Invocations already in progress will be allowed to complete eventually.
    • setUndeployedState

      void setUndeployedState()
      Stop servicing invocations for EJB instances in this Container as the container is being undeployed. No new EJB invocations will be accepted from now on. Invocations already in progress will be allowed to complete eventually.
    • getJaccEjb

      Object getJaccEjb(EjbInvocation inv)
      Used by EjbInvocation during JACC EnterpriseBean policy handler request for target EnterpriseBean instance.
      Returns:
      EnterpriseBean instance or null if not applicable for this invocation.
    • authorize

      boolean authorize(EjbInvocation inv)
      Go through ejb container to do ejb security manager authorization.
    • isTimedObject

      boolean isTimedObject()
      Returns true if this Container uses EJB Timer Service.
    • isLocalObject

      boolean isLocalObject()
      Returns true if the bean associated with this Container has a LocalHome/Local view OR a Local business view OR both.
    • isRemoteObject

      boolean isRemoteObject()
      Returns true if the bean associated with this Container has a RemoteHome/Remote view OR a Remote business view OR both.