daquan198163
2004-02-05 09:15

LOCAL REFERENCES最大的好处是:你不需要把要调用的EJB的JNDI名字硬编码到你的代码中(.lookup("ejbjndiname")),而是现在配置文件里声明对该EJB的访问,然后对ejbreferencename编码

(.lookup("ejbreferencename")),在部署的时候,再把这个ejbreferencename绑定到EJB的JNDI名字上。

我的问题谁来回答呀?????????????

banq
2004-02-05 12:04

to henry.t daquan198163

我认为你们两个问题其实还是同一个问题,REFERENCE NAME其实是在调用者和被调用者之间的一个中间者,以达到调用者和被调用者完全解耦,不使用REFERENCE NAME也可以。

调用者--->JNDI ---> REFERENCE NAME ---> 被调用者的Home接口

henry.t
2004-02-05 17:02

to daquan198163

根据我的经验,必须要在同一个EAR里面,如果不是就不可以了。

小弟也是初学不久,所以,呵呵,还是帮你顶一个了

daquan198163
2004-02-08 18:38

to henry.t,我最近终于把这个问题弄懂了,和大家分享一下:)

正如jrog所说,如果要调用EJB的local interface,那么EJB的client必须和EJB在同一个JVM的instance中,但这只是一个必要条件,而不是充分条件,这还与ClassLoader有关,即EJB的client还必须和EJB由同一个ClassLoader加载。

这样,一个WAR就可以通过本地接口访问同一个服务器中的EJB而不需要跟那个EJB打包成一个EAR了。

JBoss默认的是由单个ClassLoader加载所有的应用,所以不存在什么问题(在我的另一个贴子里banq是这么说的),而对于WebSphere它既可以设置成采用单个ClassLoader加载所有的应用,也可以设置成每个应用由单独的ClassLoader加载,默认的是后者!

daquan198163
2004-02-09 13:06

老板让我研究一下在JBoss上部署EJB,谁能给我讲讲基本步骤和方法,比如配置数据源、配置各种资源的JNDI引用……