windjp
2004-02-09 18:34

> to henry.t daquan198163

>

> 我认为你们两个问题其实还是同一个问题,REFERENCE

> NAME其实是在调用者和被调用者之间的一个中间者,以达到调

> 谜吆捅坏饔谜咄耆怦睿皇褂REFERENCE NAME也可以。

>

> 调用者--->JNDI ---> REFERENCE NAME --->

> 被调用者的Home接口

>

>

定义了reference后应该是不用再从jndi中去查找了吧,同志

henry.t
2004-02-10 01:43

所以还请楼上的老兄给大家指条明路!

windjp
2004-02-11 14:37

这个问题我也不太清楚,要不也不是用“好像”,我谈谈自己的一些理解。

ejb reference的引入应该有两个意义:

1. 如banq大哥所说,实现client端代码和jndi的解耦。

2. 是部署期jndi信息在bean中的缓存。因为bean知道自己需要什么,所以不需要在运行期向jndi去查找。看一下local ejb reference的具体定义可以说明这一点:

<ejb-local-ref>

<description />

<ejb-ref-name>EbsExt</ejb-ref-name>

<ejb-ref-type>Entity</ejb-ref-type>

<local-home>com.mycompany.dbm.EbsExtHome</local-home>

<local>com.mycompany.dbm.EbsExt</local>

<ejb-link>EbsExt</ejb-link>

</ejb-local-ref>

在weblogic中,在weblogic-ejb-jar.xml中还有如下定义:

<ejb-local-reference-description>

<ejb-ref-name>EbsExt</ejb-ref-name>

<jndi-name>EbsExt</jndi-name>

</ejb-local-reference-description>

可以看到在reference的定义中也包含了类型信息。并且reference的定义和jndi是一一对应的。

其实也可以通过home factory设计模式达到这种效果,只不过模式实现的是运行期的缓存,reference实现的是部署期的缓存。

windjp
2004-02-11 14:42

晕,xml代码没显示出来,

[ejb-local-ref]

[description /]

[ejb-ref-name]EbsExt[/ejb-ref-name]

[ejb-ref-type]Entity[/ejb-ref-type]

[local-home]com.picc.epicc.dbm.EbsExtHome[/local-home]

[local]com.picc.epicc.dbm.EbsExt[/local]

[ejb-link]EbsExt[/ejb-link]

[/ejb-local-ref]

weblogic-ejb-jar.xml中:

[ejb-local-reference-description]

[ejb-ref-name]EbsExt[/ejb-ref-name]

[jndi-name]EbsExt[/jndi-name]

[/ejb-local-reference-description]

daquan198163
2004-02-14 19:46

顶!!!!!!!!!!!!!!!!!!!!!!!!!!!