【问题标题】:Access EJB from JAX-RS从 JAX-RS 访问 EJB
【发布时间】:2012-08-28 22:19:46
【问题描述】:

在开发 Java EE Web 应用程序时,我想知道通过Rest 访问无状态EJB 对象的简单方法。

这个项目需要no来自 Java 的动态 Web,因为客户端完全部署了 javascript,因此只能通过 Ajax 调用进行通信。

正如我所读到的,一种方法是创建 2 个EJB 一个用于表示 Web 服务的其他功能。

有没有办法避免 Web Service 部分? (完全避免战争)也许DI

需要 Java EE 6、EJB 3.1、Eclipse。我也相信正确的应用服务器应该是 Glassfish 而不是 Jboss,因为它与 EJB 3.0 兼容

没有兴趣使用JAX-WS

【问题讨论】:

    标签: rest jakarta-ee ejb jersey jax-rs


    【解决方案1】:

    使用 EJB 3.1,如果您将(正确注释的)会话 bean 打包到 WAR 中,您实际上可以将会话 bean 发布为 JAX-RS Web 服务。

    因此,我能想到的最简单的解决方案是创建一个 WAR(如果您使用 Eclipse,则为动态 Web 应用程序)并在 Web 应用程序内创建一个 JAX-RS 注释的无状态会话 bean。您根本不需要任何 EJB 项目。

    【讨论】:

    • 所以如果我已经有一个 ejb 项目,我必须为其余服务创建一个新的战争项目?
    【解决方案2】:

    不是真的。在 Java EE 6 中,您可以直接将会话 Bean 发布为 JAX-WS Web 服务,但不能发布为 JAX-RS Web 服务。您几乎被困在创建一个承载 EJB 本身前面的 JAX-RS 服务的 WAR 中。

    【讨论】:

    • 那么在 Eclipse 中,总是应该创建一个带有 EJB + Web 模块的 EAR 项目?
    • 我无法与 Eclipse 对话,因为我不使用它,但这听起来很适合我。
    • 来自规范:在同样支持 EJB 的产品中,实现必须支持使用无状态和单例会话 bean 作为根资源类、提供者和应用程序子类。 JAX-RS 注释可以应用于 bean 的本地接口或直接应用于无接口 bean。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多