User: simone  
  Date: 00/10/16 16:29:56

  Added:       src/main/org/jboss/ejb/plugins
                        StatefulSessionInstanceCache.java
  Log:
  Passivating cache for stateful beans
  
  Revision  Changes    Path
  1.1                  
jboss/src/main/org/jboss/ejb/plugins/StatefulSessionInstanceCache.java
  
  Index: StatefulSessionInstanceCache.java
  ===================================================================
  /*
   * jBoss, the OpenSource EJB server
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
   
  package org.jboss.ejb.plugins;
  
  import java.rmi.RemoteException;
  import java.rmi.NoSuchObjectException;
  import org.jboss.ejb.Container;
  import org.jboss.ejb.StatefulSessionContainer;
  import org.jboss.ejb.EnterpriseContext;
  import org.jboss.ejb.StatefulSessionEnterpriseContext;
  
  /**
   * Cache for stateful session beans. 
   *      
   * @author Simone Bordet ([EMAIL PROTECTED])
   * @version $Revision: 1.1 $
   */
  public class StatefulSessionInstanceCache 
        extends EnterpriseInstanceCache
  {
        // Constants -----------------------------------------------------
      
        // Attributes ----------------------------------------------------
        /* The container */
        private StatefulSessionContainer m_container;
      
        // Static --------------------------------------------------------
     
        // Constructors --------------------------------------------------
     
        // Public --------------------------------------------------------
        /* From ContainerPlugin interface */
        public void setContainer(Container c) 
        {
                m_container = (StatefulSessionContainer)c;
        }
        
        // Z implementation ----------------------------------------------
  
        // Y overrides ---------------------------------------------------
        protected Container getContainer() {return m_container;}
        protected void passivate(EnterpriseContext ctx) throws RemoteException
        {
                
m_container.getPersistenceManager().passivateSession((StatefulSessionEnterpriseContext)ctx);
        }
        protected void activate(EnterpriseContext ctx) throws RemoteException
        {
                
m_container.getPersistenceManager().activateSession((StatefulSessionEnterpriseContext)ctx);
        }
        protected EnterpriseContext acquireContext() throws Exception
        {
                return m_container.getInstancePool().get();
        }
        protected void freeContext(EnterpriseContext ctx)
        {
                m_container.getInstancePool().free(ctx);
        }
        protected Object getKey(EnterpriseContext ctx) 
        {
                return ctx.getId();
        }
        protected void setKey(Object id, EnterpriseContext ctx) 
        {
                ctx.setId(id);
        }
        protected boolean canPassivate(EnterpriseContext ctx) 
        {
                if (ctx.isLocked()) 
                {
                        // The context is in the interceptor chain
                        return false;
                }
                else 
                {
                        if (ctx.getTransaction() != null) 
                        {
                                return false;
                        }
                }
                return true;
        }
     
        // Package protected ---------------------------------------------
      
        // Protected -----------------------------------------------------
  
        // Private -------------------------------------------------------
  
        // Inner classes -------------------------------------------------
  
  }
  
  
  

Reply via email to