佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1626|回复: 4

[Java][JavaEE] EJB3, Remote Interface 和 Local Interface 的疑问

[复制链接]
发表于 24-5-2008 04:03 PM | 显示全部楼层 |阅读模式
以前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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 11:31 AM , Processed in 0.123835 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表