当前页面: 开发资料首页 → J2EE 专题 → 大侠路过帮忙解答:EJB中EJBHome中的Create()方法调用过程
大侠路过帮忙解答:EJB中EJBHome中的Create()方法调用过程
摘要: 大侠路过帮忙解答:EJB中EJBHome中的Create()方法调用过程
我刚刚接触EJB对继承EJBHome的接口中申明的Create()方法调用过程搞不清楚,它是返回的是一个继承EJBObject接口啊,那这个类怎么会执行实现SessionBean接口的类里面的具体方法呢???
具体如下:
public interface UserInfo extends EJBObject {
public String hello() throws RemoteException;
}
public interface UserInfoHome extends EJBHome {
public UserInfo create() throws CreateException, RemoteException;
}
public class UserInfoBean implements SessionBean {
SessionContext sessionContext;
public void ejbCreate() throws CreateException {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public String hello() {
System.out.print("HELLO");
return "helloWorld!!!";
}
}
关注...
顶下
我想楼主你是对运作流程不怎么了解而已~~~
运作流程如下:
(1)客户端(相对于EJBContainer来说,客户端可以是JSP,Servlet,JavaBean或者是JavaApplication)通过JNDI上查找EJBHome对象,如果所要查找的EJBHome存在,则返回EJBHome对象.(顺便说一下:EJBHome对象是EJBObject对象工厂,管理EJBObject的生命周期);
(2)客户端通过RMI调用所获取的EJBHome对象的create()方法返回EJBObject对象;
(3)客户端再次通过RMI调用所获取的EJBObject对象的业务方法hello(),这个时候EJBObject就会把请求委托给Bean Class(也就是你的UserInfoBean),进而执行Bean Class中的hello()方法
这个运作流程过程中运用了代理模式和委托模式~~~Ending
还是看下书先了解一下,你一点都不了解,不好给你叙述问题啊
谢谢二楼!我基本上明白了执行的过程,但是对你的第三步我想问EJB是通过怎样的机制去调用UserInfoclass中的hello()方法,请再帮忙说说清楚,谢谢了!
(2)客户端通过RMI调用所获取的EJBHome对象的create()方法返回EJBObject对象;
--------------应该返回的是EJBObject对象的存根程序,而不是EJB容器中的EJBObject对象
客户请求代理去办事情----》代理去找公司办事情---》公司具体事情由职员完成
代理就是 EJBObject对象的存根程序
公司就是EJBObject对象
职员就是Bean Class(也就是你的UserInfoBean),
EJBObject对象的存根程序在上边例子中是指什么,谢谢.