/*
 * JBoss, the OpenSource J2EE webOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jboss.ejb3;

import java.util.Hashtable;
import javax.ejb.TimerService;
import javax.management.ObjectName;
import javax.naming.InitialContext;
import javax.naming.Context;
import org.jboss.ejb3.entity.ManagedEntityManagerFactory;

/**
 * Comment
 *
 * @author <a href="mailto:bill@jboss.org">Bill Burke</a>
 * @version $Revision: 1.12.2.5 $
 */
public interface Container
{
   String ENC_CTX_NAME = "java:comp.ejb3";

   Class getBeanClass();

   String getEjbName();

   ObjectName getObjectName();

   TimerService getTimerService();

   Pool getPool();

   Object construct();

   ManagedEntityManagerFactory getManagedEntityManagerFactory();

   public void setManagedEntityManagerFactory(ManagedEntityManagerFactory factory);

   void invokePostConstruct(Object bean);

   void invokePreDestroy(Object bean);

   void invokePostActivate(Object bean);

   void invokePrePassivate(Object bean);

   void invokeInit(Object bean);

   void invokeInit(Object bean, Class[] initTypes, Object[] initValues);

   EjbLinkResolver getEjbLinkResolver();

   void setEjbLinkResolver(EjbLinkResolver resolver);

   public void create() throws Exception;

   public void start() throws Exception;

   public void stop() throws Exception;

   public void destroy() throws Exception;

   InitialContext getInitialContext();

   Hashtable getInitialContextProperties();

   Context getEnc();
}
