/* JFox, the OpenSource J2EE Application Server
 *
 * Distributable under GNU LGPL license by gun.org
 * more details please visit http://www.huihoo.org/jfox
 */

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
     */
    EJBObjectId getObjectId();

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

    Object[] getArgs();

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

    Method getMethod();

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

    EnterpriseBean getBean();
}