All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.ejb.Container Maven / Gradle / Ivy

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */
// Portions Copyright [2016-2021] [Payara Foundation and/or its affiliates]

package com.sun.ejb;

import java.rmi.Remote;

import jakarta.ejb.CreateException;
import jakarta.ejb.EJBContext;
import jakarta.ejb.EJBException;
import jakarta.ejb.EJBHome;
import jakarta.ejb.EJBLocalObject;
import jakarta.ejb.EJBMetaData;
import jakarta.ejb.EJBObject;
import jakarta.ejb.FinderException;

import org.glassfish.api.invocation.ComponentInvocation;
import org.glassfish.ejb.deployment.descriptor.EjbDescriptor;

/**
 * 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.
 * There are four types of Containers:
 * StatefulSessionContainer, StatelessSessionContainer,
 * EntityContainer, and MessageBeanContainer.
 * 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 RI as well as from generated EJBHome/EJBObject implementations. * */ public interface Container { // These values are for the transaction attribute of a bean method public int TX_NOT_INITIALIZED = 0; // default public int TX_NOT_SUPPORTED = 1; public int TX_BEAN_MANAGED = 2; public int TX_REQUIRED = 3; public int TX_SUPPORTS = 4; public int TX_REQUIRES_NEW = 5; public int TX_MANDATORY = 6; public int TX_NEVER = 7; // Must match the values of the tx attributes above. public String[] txAttrStrings = { "TX_NOT_INITIALIZED", "TX_NOT_SUPPORTED", "TX_BEAN_MANAGED", "TX_REQUIRED", "TX_SUPPORTS", "TX_REQUIRES_NEW", "TX_MANDATORY", "TX_NEVER" }; // These values are for the security attribute of a bean method public int SEC_NOT_INITIALIZED = 0; // default public int SEC_UNCHECKED = 1; public int SEC_EXCLUDED = 2; public int SEC_CHECKED = 3; public String[] secAttrStrings = { "SEC_NOT_INITIALIZED", "SEC_UNCHECKED", "SEC_EXCLUDED", "SEC_CHECKED" }; /** * Return the EJBObject/EJBHome for the given instanceKey. * @param 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. */ Remote getTargetObject(byte[] instanceKey, String remoteBusinessIntf); /** * Release the EJBObject/EJBHome object. * Called from the ProtocolManager after a remote invocation completes. */ void releaseTargetObject(Remote remoteObj); /** * Performs pre external invocation setup such as setting application * context class loader. Called by getTargetObject() and web service inv */ public void externalPreInvoke(); /** * Performs post external invocation cleanup such as restoring the original * class loader. Called by releaseTargetObject() and web service inv */ public void externalPostInvoke(); /** * Obtain an Entity EJBObject corresponding to the primary key. * Used by the PersistenceManager. */ EJBObject getEJBObjectForPrimaryKey(Object pkey); /** * Obtain an Entity EJBLocalObject corresponding to the primary key. * Used by the PersistenceManager. */ EJBLocalObject getEJBLocalObjectForPrimaryKey(Object pkey, EJBContext ctx); EJBLocalObject getEJBLocalObjectForPrimaryKey(Object pkey); /** * 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. * * @exception EJBException Thrown when the assertion fails. */ void assertValidLocalObject(Object o) throws 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. * * @exception EJBException Thrown when the assertion fails. */ void assertValidRemoteObject(Object o) throws EJBException; /** * Remove a bean. Used by the PersistenceManager. */ void removeBeanUnchecked(EJBLocalObject bean); /** * Remove a bean given primary key. Used by the PersistenceManager. */ void removeBeanUnchecked(Object pkey); /** * 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) * * @exception 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. */ void preSelect() throws jakarta.ejb.EJBException; /** * Called by the EJB(Local)Object/EJB(Local)Home before an invocation * on a bean. */ void preInvoke(EjbInvocation inv); /** * Called by the EJB(Local)Object/EJB(Local)Home after an invocation * on a bean. */ void postInvoke(EjbInvocation inv); /** * Called by webservice code to do ejb invocation post processing. */ void webServicePostInvoke(EjbInvocation inv); /** * Called after creation when Hazelcast is available */ default void initialize() {}; /** * 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. * @param primaryKey the value returned from ejbCreate. */ void postCreate(EjbInvocation inv, Object primaryKey) throws CreateException; /** * Called by the EJB(Local)Home after invoking ejbFind* on an EntityBean. * @param primaryKeys the primaryKey or collection of primaryKeys * (Collection/Enumeration) returned from ejbFind. * @param findParams the parameters to the ejbFind method. * @return an EJBObject reference or Collection/Enumeration of EJBObjects. */ Object postFind(EjbInvocation inv, Object primaryKeys, Object[] findParams) throws FinderException; /** * @return the EjbDescriptor containing deployment information * for the EJB type corresponding to this Container instance. */ EjbDescriptor getEjbDescriptor(); /** * @return the MetaData for this EJB type. */ EJBMetaData getEJBMetaData(); /** * @return the classloader of this container instance. */ ClassLoader getClassLoader(); /** * @return the EJBHome object reference for this container instance. */ EJBHome getEJBHome(); /** * @return A SecurityManager object for this container. */ com.sun.enterprise.security.SecurityManager getSecurityManager(); /** * 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. */ boolean userTransactionMethodsAllowed(ComponentInvocation inv); /** * Called from the TM when an EJB with Bean-Managed transactions starts a tx */ void doAfterBegin(ComponentInvocation ci); /** * 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. * @param deploy true if this method is called during application deploy */ void startApplication(boolean deploy); /** * Called from EJB JarManager when an application is undeployed. */ void undeploy(); /** * Called when server instance is Ready */ void onReady(); /** * Called when server instance is shutting down */ void onShutdown(); /** * Called when server instance is terminating. This method is the last * one called during server shutdown. */ void onTermination(); /** * Called from NamingManagerImpl during java:comp/env lookup. */ String getComponentId(); /** * Start servicing invocations for EJB instances in this Container. */ void setStartedState(); /** * 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. */ void setStoppedState(); /** * 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. */ void setUndeployedState(); /** * Used by EjbInvocation during JACC EnterpriseBean policy handler request * for target EnterpriseBean instance. * * @return EnterpriseBean instance or null if not applicable for this * invocation. */ Object getJaccEjb(EjbInvocation inv); /** * Go through ejb container to do ejb security manager authorization. */ boolean authorize(EjbInvocation inv); /** * Returns true if this Container uses EJB Timer Service. */ boolean isTimedObject(); /** * Returns true if the bean associated with this Container has a LocalHome/Local view * OR a Local business view OR both. */ boolean isLocalObject(); /** * Returns true if the bean associated with this Container has a RemoteHome/Remote view * OR a Remote business view OR both. */ boolean isRemoteObject(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy