我们有一个应用程序,每个 bean 具有三个接口(interface)。包含所有方法的 *BI
(业务接口(interface)),*LI
,它扩展了 BI
并注释为 @Local
和 *RI
,它也扩展了 BI
,但注释为 @Remote
。
我想删除所有 *LI
和 *RI
接口(interface)以支持 *BI
,将它们保留为 @Remote
,但是有一个问题。
本地查找将参数作为引用传递,而远程查找则使用深度复制。该应用程序充满了传递引用的期望(只有在传递引用有效的情况下才有效)。
如果我只有 @Remote
接口(interface),容器会知道它何时是本地查找,并在这种情况下使引用传递起作用?
容器是 JBoss AS 7.1.1 Final,我们使用 EJB 3.1。 提前致谢。
最佳答案
由于本地和远程接口(interface)的行为不同,即使本地客户端也可能想要使用远程接口(interface)。因此,如果容器只是猜测“这个客户端在同一个虚拟机中运行,让我们给他一个本地接口(interface)”,就会出现问题。
有关差异的详细信息已讨论过 here 。
如果您想将所有接口(interface)定义保留在一个地方,只需编写一个接口(interface)即可
并让它被两个用@Local
和@Remote
注释的(空)接口(interface)继承。
关于jboss7.x - @Local 和 @Remote 接口(interface) - 通过引用传递与深层复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16772884/