通俗的说:
remote接口用于业务方法,通过她可以实现分布式调用.
home接口用于创建一个业务实例
remote接口用于业务方法,通过她可以实现分布式调用.
home接口用于创建一个业务实例
解决方案 »
- 菜鸟求助 Unknown Source 怎么解决?
- Spring bean 加载的先后顺序。。
- ssh整合
- Java的BufferedReader 问题 求解-求高手帮助!在此谢谢!
- hibernate+spring+struts的一对多相关联修改子表的问题
- jsp页面上怎么获得数据库中查询得到的图片文件
- 关于EJB实体bean发布的问题麻烦帮忙看一下
- jdom用法大收集,各位踊跃参加!
- java中system.in是字节流为啥输入中文字符没有错呢
- List<Map<String,Object>>中的数据怎么分开读取
- 大家说说java为什么不能回收file\socket等资源,这类资源还有那些?
- @@@@@@@@@@@@@@初学ejb,第一个例子编译不通过!!!
外部程序通过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;
}
---------这是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) ;
}
public String sayHello(String msg) {
System.out.println("Hello World "+msg);
return "Hello World "+msg; }
他在SessionBean也就是你说的EJBBean中实现
在EJBObject中定义
public interface Enterprise1 extends javax.ejb. {
public String sayHello(String msg) throws RemoteException;
}
另一种像ejbCreate()也是在 SessionBean中实现
public void ejbCreate() throws CreateException {
/**@todo Complete this method*/
}
在EJBHome中定义只不过去掉了前面的ejb,凡是在SessionBean中带ejb的都在EJBHome中定义:
public interface Enterprise1Home extends javax.ejb.EJBHome {
public Enterprise1Local create() throws CreateException;
}