当前位置: 技术问答>java相关
Ejb Home接口 概念问题
来源: 互联网 发布时间:2017-03-14
本文导语: EJB 概念问题: 由于我对Rmi的工作方式不是很清楚,因此在理解EJB Home 接口的时候有点不清楚,请热心的朋友指点: 一般来说,EJB 组件有组件本身、Home接口、Remote接口几部分组成。客户端的调用方式类似如下...
EJB 概念问题:
由于我对Rmi的工作方式不是很清楚,因此在理解EJB Home 接口的时候有点不清楚,请热心的朋友指点:
一般来说,EJB 组件有组件本身、Home接口、Remote接口几部分组成。客户端的调用方式类似如下代码
1. InitialContext ic = new InitialContext();
2. Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
3. ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef,
ConverterHome.class);
4. converter = home.create();
我不太明白的是第三句,ConverterHome这个接口的class文件位于客户端吗?与客户端位于同一个jvm中吗?或者说必须在客户端的class中?
如果是,那么我想知道,把ConverterHome.class 文件放置于客户端机器上的这一步骤,是在什么时候做的。是所谓“部署”的时候吗?
我能理解,ejb 使用jndi的方式使得组件的位置透明,当组件位置变化的时候,ejb组件的代码并不需要重写。可是如果我有N台Application server.是不是每一台上我都需要部署ConverterHome ? 这样,所谓位置的透明是不是有些折扣?
由于我对Rmi的工作方式不是很清楚,因此在理解EJB Home 接口的时候有点不清楚,请热心的朋友指点:
一般来说,EJB 组件有组件本身、Home接口、Remote接口几部分组成。客户端的调用方式类似如下代码
1. InitialContext ic = new InitialContext();
2. Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
3. ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef,
ConverterHome.class);
4. converter = home.create();
我不太明白的是第三句,ConverterHome这个接口的class文件位于客户端吗?与客户端位于同一个jvm中吗?或者说必须在客户端的class中?
如果是,那么我想知道,把ConverterHome.class 文件放置于客户端机器上的这一步骤,是在什么时候做的。是所谓“部署”的时候吗?
我能理解,ejb 使用jndi的方式使得组件的位置透明,当组件位置变化的时候,ejb组件的代码并不需要重写。可是如果我有N台Application server.是不是每一台上我都需要部署ConverterHome ? 这样,所谓位置的透明是不是有些折扣?
|
EJB 概念问题:
由于我对Rmi的工作方式不是很清楚,因此在理解EJB Home 接口的时候有点不清楚,请热心的朋友指点:
一般来说,EJB 组件有组件本身、Home接口、Remote接口几部分组成。客户端的调用方式类似如下代码
1. InitialContext ic = new InitialContext();
2. Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
3. ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef,
ConverterHome.class);
4. converter = home.create();
我不太明白的是第三句,ConverterHome这个接口的class文件位于客户端吗?与客户端位于同一个jvm中吗?或者说必须在客户端的class中?
如果是,那么我想知道,把ConverterHome.class 文件放置于客户端机器上的这一步骤,是在什么时候做的。是所谓“部署”的时候吗?
我能理解,ejb 使用jndi的方式使得组件的位置透明,当组件位置变化的时候,ejb组件的代码并不需要重写。可是如果我有N台Application server.是不是每一台上我都需要部署ConverterHome ? 这样,所谓位置的透明是不是有些折扣?
由于我对Rmi的工作方式不是很清楚,因此在理解EJB Home 接口的时候有点不清楚,请热心的朋友指点:
一般来说,EJB 组件有组件本身、Home接口、Remote接口几部分组成。客户端的调用方式类似如下代码
1. InitialContext ic = new InitialContext();
2. Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
3. ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef,
ConverterHome.class);
4. converter = home.create();
我不太明白的是第三句,ConverterHome这个接口的class文件位于客户端吗?与客户端位于同一个jvm中吗?或者说必须在客户端的class中?
如果是,那么我想知道,把ConverterHome.class 文件放置于客户端机器上的这一步骤,是在什么时候做的。是所谓“部署”的时候吗?
我能理解,ejb 使用jndi的方式使得组件的位置透明,当组件位置变化的时候,ejb组件的代码并不需要重写。可是如果我有N台Application server.是不是每一台上我都需要部署ConverterHome ? 这样,所谓位置的透明是不是有些折扣?
|
我的理解是客户端远程接口的代码存根,内部包装了rmi调用的一些细节,应该说位于客户和客户端位于同一个jvm的是这个代码存根对象,“部署”的时候实际上是生成了这个代码存根类,在客户端调用的时候,只要将这个类以及一些支持类放到客户端就可以了
|
lookup的时候实际上是在本地(客户端)生成了一个对象
第3句只是一个类似类型转换的一步
ConverterHome.class是在客户端的,这样代码里才能使用啊,客户通过她来生成了一个ejb实例,
如果n台协同工作的话,实际上在客户端看来是一台,ejb只需部署一次,当然多台协同工作是要配制的
第3句只是一个类似类型转换的一步
ConverterHome.class是在客户端的,这样代码里才能使用啊,客户通过她来生成了一个ejb实例,
如果n台协同工作的话,实际上在客户端看来是一台,ejb只需部署一次,当然多台协同工作是要配制的
|
好像可以用urlclassload来远程load一个class的,得翻翻书了
|
这个主要理解“根”和“干”的概念。