/* JFox, the OpenSource J2EE Application Server
 *
 * Copyright (C) 2002 huihoo.com
 * Distributable under GNU LGPL license
 * See the GNU Lesser General Public License for more details.
 */

package org.jfox.ejb;

import java.util.Iterator;

import javax.transaction.TransactionManager;

import org.huihoo.jfox.system.Component;
import org.jfox.ejb.plugin.Interceptable;



/**
 * 容器接口,定义 ejb 容器需要实现的方法,Container 还应该包含所有 ejb bulk 共享的资源,比如:ThreadPool
 * Container 数据存储结构
 * homeClassName -> bulk
 *                        @null EJBHome
 *                        @xxx EJBObject xxx 为 EJBObject 的 id
 *
 * @author <a href="mailto:young_yy@hotmail.com">Young Yang</a>
 */

public interface Container extends Component, Interceptable {

  /**
   *
   * @return 所有 bean bulk 的 key 的 iterator
   */
  Iterator listBulks();

  void dropBulk(String beanClassName) throws Exception;

  /**
   * 根据 deployer 传来的参数,生成一个 bean bulk,并且把其 Home 绑定到 jndi
   */
  void createBulk(BulkMetaData meta)  throws Exception;

  /**
   * invoke a method
   * @return
   */
  Object invoke(Invocation invocation) throws Exception;

  TransactionManager getTransactionManager();

  String getRemoteProtocol();
  void setRemoteProtocol(String remoteProtocol);
  String getLocalProtocol();
  void setLocalProtocol(String localProtocol);

}