/* 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.io.Serializable;
import java.lang.reflect.Method;
import javax.ejb.EnterpriseBean;

/**
 * a Invocation 代表一个远程的调用,由 ContainerRemote 组装,传递给 Container 执行
 * 
 * @author <a href="mailto:young_yy@hotmail.com">Young Yang</a>
 */

public interface Invocation extends Serializable {

  /**
   *
   * @return 用来执行该方法的 ejb object 的 id
   */
  ObjectId getObjectId();

  /**
   *
   * @return 要执行的方法的 hash, 这个 hash 可以唯一的标志一个 method
   */
  String getMethodHash();

  Object[] getArgs();

  /**
   * 在由 Bulk 取得真是的 Method 对象之后,把 Method 设置到 Invocation 中
   * @param method
   */
  void setMethod(Method method);

  Method getMethod();

  /**
   * the bean object
   * @param instance
   */
  void setBean(EnterpriseBean instance);
  EnterpriseBean getBean();
}