【问题标题】:Change Local EJB Interface in Remote EJB Interface - Result to the client application在远程 EJB 接口中更改本地 EJB 接口 - 结果到客户端应用程序
【发布时间】:2012-09-13 17:16:51
【问题描述】:

我有一个使用本地 EJB 接口的 Java EE/JSF 应用程序,我想将业务层与另一个客户端应用程序(在不同的 JVM 中)一起使用。

所以,我需要使用远程 EJB 接口在新的客户端应用程序中使用依赖注入。

但是如果我更改 EJB 接口,我还必须更改“第一个”客户端应用程序的 managedBean 中的所有依赖注入?

【问题讨论】:

    标签: interface dependency-injection ejb-3.0 local remote-access


    【解决方案1】:

    本地接口使用 pass-by-reference,但远程接口使用 pass-by-deep-copy。这意味着 (1) 你的所有参数和返回值必须是可序列化的,并且 (2) 你必须依赖传递引用,无论是为了性能(非常大的 Map 等)还是正确性(将对象传递给方法,更改对象,期望结果对调用者可见。

    也就是说,当您说“本地 EJB 接口”时,您的意思是 @Local,还是您的意思是 EJBLocalHome?如果是前者,那么您可以尝试更改为@Remote,它可能会起作用。如果是后者,那么您需要更新您的接口以使用EJBHome/EJBObject,这意味着您需要将 RemoteException 添加到接口上的所有方法中,这意味着您至少需要更新调用者来处理异常。

    【讨论】:

    • >本地接口使用 pass-by-reference - 虽然这是 EJB 规范使用的原始术语,但现在规范中有一个脚注。 Java 没有按引用传递,而是按值传递指针(引用)。远程接口使用的东西可以描述为“pass-by-deep-copy”。
    • 当然,进行了更新。不过,我不确定我是否可以重新训练我的大脑/手指,使其不再说“按值传递”:-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2011-04-17
    • 2011-02-12
    相关资源
    最近更新 更多