EJB的Home和Object

类别:Java 点击:0 评论:0 推荐:

1.Home和Object
   外部程序通过Home接口控制ejb的生命周期,包括创建、删除和定位Bean,而Object是对外的接口,外部程序程序通过Object访问ejb的业务逻辑方法

2.LocalHome 和LocalObject
   和Home和Object一样区别在于LocalHome 和LocalObject是在本地调用


3. Object和LocalObject  
   在EJB2.0规范中定义了两种对外接口:Object(远程接口Remote Interface),LocalObject(本地接口Local Interfacce),其他程序调用ejb必须通过此对外接口完成,如果调用ejb的程序与ejb在同一应用服务器(如weblogic)中,这通过LocalObject(本地接口Local Interfacce)可以提高访问效率,如不在同一应用服务器就只能通过Object(远程接口Remote Interface)

4.LocalHome ,Home
  和Object和LocalObject一样判断使用LocalHome 或是Home主要看调用ejb的程序是否和ejb在同一应用服务器

例:
--------------------这是ejb的Bean类,主要用来封装业务逻辑------------------------------
package sessionbeanexample;

import javax.ejb.*;

public class Enterprise1Bean implements SessionBean {
  SessionContext sessionContext;
  public void ejbCreate() throws CreateException {
    /**@todo Complete this method*/
  }
  public void ejbRemove() {
    /**@todo Complete this method*/
  }
  public void ejbActivate() {
    /**@todo Complete this method*/
  }
  public void ejbPassivate() {
    /**@todo Complete this method*/
  }
  public void setSessionContext(SessionContext sessionContext) {
    this.sessionContext = sessionContext;
  }
  public String sayHello(String msg) {
    System.out.println("Hello World "+msg);
        return "Hello World "+msg;

  }
}

---------这是Home接口,主要用来创建ejb,调用他的程序通过create() 方法创建ejb,该create()对应bean类中的ejbCreate(),只不过方法代码在bean定义,对外接口在Home中定义-----------------------

package sessionbeanexample;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface Enterprise1Home extends javax.ejb.EJBHome {
  public Enterprise1 create() throws CreateException, RemoteException;
}


-------这是LocalHome接口,主要用来本地创建ejb,和Home定义的区别在于由于本地(ejb和调用程序在同一应用服务器)调用而不抛出 RemoteException---------------------------

package sessionbeanexample;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface Enterprise1Home extends javax.ejb.EJBHome {
  public Enterprise1Local create() throws CreateException;
}

转自:http://community.csdn.net/Expert/topic/3501/3501780.xml?temp=.383877
---------这是Object接口,外部程序通过他来访问ejb的逻辑方法,调用他的程序通过调用Object接口的sayHello方法来调用对应在bean类中的sayHello,只不过方法代码在bean定义,对外接口在Object中定义-----------------------
package sessionbeanexample;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface Enterprise1 extends javax.ejb.EJBObject {
  public String sayHello(String msg) throws RemoteException;
}


---------这是LocalObject接口,除了该接口是本地(ejb和调用程序在同一应用服务器)访问和不抛出RemoteException外,其他和Object一样-----------------------
package sessionbeanexample;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface Enterprise1 extends javax.ejb.EJBLocalObject {
  public String sayHello(String msg) ;
}

补充:
这个 Enterprise1Local 应该是在ejb-jar.xml里定义的 --如:<remote>Enterprise1Local</remote>

就是ejb的 Object

本文地址:http://com.8s8s.com/it/it13971.htm