【问题标题】:Separate JSF and EJB apps分离 JSF 和 EJB 应用程序
【发布时间】:2010-12-01 00:53:42
【问题描述】:

如何从单独的 JSF 应用程序使用已部署的 EJB 应用程序?

我正在尝试分离这两个应用程序并通过远程接口访问 EJB。为此,我有两个 Eclipse 项目 - 一个包含 EJB 和持久性逻辑,独立测试并且可以工作。然后我创建了一个引用 EJB 项目的 JSF 项目(因此我可以访问远程接口),但是在尝试注入 EJB 实例或查找 JNDI 名称时失败(我尝试了几种变体均无济于事)。这是我的 JSF 支持 bean 包含的内容:

@EJB(lookup="java:global/LocEJB/LocalityEJB!com.ame.business.LocalityEJBRemote") private LocalityEJB远程位置;

这是在 Glassfish 上,我只是引用 EJB 项目,而不是将它与 JSF 项目打包在一起。当我执行后者时,我收到错误初始化 JSF 项目的 EJB 容器问题。那么,我如何访问远程 EJB,我的处理方式是否有意义?

提前致谢!

【问题讨论】:

    标签: eclipse jsf jakarta-ee glassfish ejb-3.0


    【解决方案1】:

    您的 JSF 应用程序必须了解 EJB 接口(至少在 EJB 2.0 上是这样)。您正在使用代理模式来隐藏这是对您的 JSF 客户端的远程组件这一事实。

    【讨论】:

    • 这就是问题的本质 - 我如何部署 JSF 以便我可以针对接口进行编译并让容器管理注入,但不需要将 EJB 和 JSF 打包/部署在一起?
    • 您必须在两者中都有共同的代码 - 这可能是他们共享的 JAR。
    • 谢谢,我试试看。
    【解决方案2】:

    首先,如果尝试在容器外访问,则不能使用本地接口。您必须使用远程接口。

    您可以在 sun-web.xml 中定义您的远程接口或在 bean 中注入 EJB。

    sun-web.xml 代码:

    <ejb-ref> <ejb-ref-name>com.xxx.session.UserRemote</ejb-ref-name> <jndi-name>corbaname:iiop:127.0.0.xxx:3700#com.xxx.session.UserRemote</jndi-name> </ejb-ref>

    你的类路径中必须有远程接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2016-02-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      相关资源
      最近更新 更多