【问题标题】:Best way to expose business logic to restful services via @Inject通过@Inject 将业务逻辑暴露给宁静服务的最佳方式
【发布时间】:2014-01-26 19:05:25
【问题描述】:

我在 SO 和网络上阅读了很多关于此主题的内容,但在处理较旧的帖子时似乎存在问题...

我想将我的 EJB 业务逻辑公开给一个 rest api / 将一个 ejb 注入到球衣资源中。

使用@EJB 效果很好,但有人建议不要将@EJB 用于本地bean。

有不同的方法可以使用@Inject 在服务中注入 bean。最简单的(对我来说)似乎如下:

@RequestScoped // This line is important!
@Path("service")
    public class Rest {

    @Inject Bean beany;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String get () {
        return beany.saySomething();
    }

}

像 cdi 一样注释资源。

This 讨论让我找到了解决方案,但也说明了问题(未指定行为)。我想知道现在情况是否更清楚了。

我正在使用 glassfish 4 附带的库。

是否有 JEE-7 最佳实践方法来实现这一目标?过时的讨论真的很难挖掘。

提前致谢!

【问题讨论】:

    标签: java rest jakarta-ee ejb-3.1


    【解决方案1】:

    非常好的问题 (+1),目前 Java EE 7 更精简、更容易,但是,SO 并没有那么更新。有一种新模式可能对您有用。 边界模式,是的,是一个带注释的 POJO,带有 @Stateless -在 SOA 环境中首选- 或 @Stateful,你开始思考......为什么?

    首先,边界是您的应用程序的起点并暴露您的服务,在 REST 哲学中,您应该执行 CRUD 之类的操作(记住:get、post、put、delete),而 ejb 就是这种边界( Session Facade),用于事务操作(或其他强大的服务,例如异步、消息驱动 Bean 等...)。

    因此,EJB 是您的服务,您可以将它注入到任何您想要的位置 -rest、soap、RMI 和其他 CDI POJOS-。感谢规范,现在您可以使用@Inject 注入 EJB,并且容器会发现这确实是一个超级强大的 EJB!。更瘦?...不可能。您的示例是正确的方法,无论我们是否在谈论向 JSF 页面公开的 bean,都尽可能多地使用 @Inject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2013-05-23
      • 2021-06-21
      • 2010-09-28
      • 2023-03-03
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多