|
查看: 1626|回复: 4
|
[Java][JavaEE] EJB3, Remote Interface 和 Local Interface 的疑问
[复制链接]
|
|
|
以前EJB2 时代还有 Home 。。 , 现在应该没有了, 所以不理会。
本来上网读了一些资料, 还觉得自己了解了。 可是实际上code 的时候,却发觉理解好像错误, 所以想请教下Java Developer。
我所了解的 情况是, 在JNDI lookup 的时候, 假设有Bean A , Bean B。 如果 A 跟 B 在同一个 JVM 上运行, A lookup B 的Local Interface 就能了。
我对"同一个JVM 上运行“这段的了解,和结论是
1. A 与B 在不同的machine 运行, 肯定在不同的JVM 上运行, 所以一定要用 Remote Interface。
2. A 与B 在同一个machine 运行, 如果里面只有安装一个 JVM , 那么 A 跟 B 是在同一个 JVM 上运行, 用 Local Interface。
3. A 与B 在同一个machine 运行, 如果里面只有安装多过一个 JVM , 那么 A 跟 B 是在不同版本的 JVM 上执行, 那么就要用Remote Interface
可是, 在我port 一个 Jboss project 到 Geronimo 的时候, 我发觉我的概念不对。
情况是如此的, 那Jboss 的project , 是一个 JavaEE web application , 用 Ant& Maven 来 build 。
在 Eclipse 下, EJB class 和 Webapp Java class 是在同一个 project 下, deploy 在 localhost 的Jboss 里 , 在 localhost 用 browser 测试了成功运行。
这个project , Web App Java class lookup EJB class , 用的是 Local Interface。
我把该project port 到 Geronimo , 在Eclipse 分成两个 project , 一个EJB project , 一个 dynamic Web project 。 然后, 最后开一个 Enterprise Application project , 把那个 EJB 和 Dynamic Web Project 归在这个 project 下。
Deploy 成功了, 但是在localhost 的 browser 里测试, 网页可以打开, 但是在JNDI Lookup bean 的时候 , 有error ,类似 this interface cannot work remotely , 我把那个lookup code 修改, lookup 到 Remote Interface , 再次deploy 了, 就成功了。
我开始怀疑我的 Remote, Local concept 是不是有问题了。
所以, 在此想请教大家, 真正的 Remote , Local Interface 的concept 是如何?
Web App 的Java class 是不是需要下载到client 下运行的? 如果是, 那么用Remote Interface 是应该的。
多多指教, 谢谢。
[ 本帖最后由 jangancari 于 24-5-2008 04:23 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 25-5-2008 09:01 AM
|
显示全部楼层
原帖由 jangancari 于 24-5-2008 04:03 PM 发表 
Web App 的Java class 是不是需要下载到client 下运行的?
no.
java class 是 compile 在 web app
client 只是發送請求到 web app, client 沒有做Java的東西的
applet 除外! |
|
|
|
|
|
|
|
|
|
|
发表于 27-5-2008 10:22 PM
|
显示全部楼层
看了你的發表后,我也想搞清楚Local interface and Remote interface的用意。
我之前的Idea也和你一样,Remote Interface 只發在不同JVM的基礎上。
待求路過的高手解答。 |
|
|
|
|
|
|
|
|
|
|
发表于 28-5-2008 01:03 AM
|
显示全部楼层
ejb客户和ejb服务器再同一个JVM instance 跑,才可以用 Local Interface
一个EJB project (e.g deploy to JBoss) + 一个 dynamic Web project (e.g deploy to Tomcat) => 二个不同的 JVM instance
一个EJB project + 一个 dynamic Web project (e.g deploy to a single JBoss embedded with Tomcat) => 一个JVM instance
Local Interface 更加高效率因为用内部JVM通信接口, Remote Interface 用 TCP/IP 接口.
[ 本帖最后由 hkloke2000 于 28-5-2008 01:08 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 31-5-2008 06:42 PM
|
显示全部楼层
感谢大家的回复。
尤其是hkloke2000 的回复,让我茅塞顿开。 关键就在JVM Instance 的 Instance 。
这跟我知道的Geronimo 是相符的, tomcat 不是embeded 在 Geronimo 里, 因为Geronimo 也支援jetty |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|