【问题标题】:JBoss bean validation needs to call an EJBJBoss bean 验证需要调用一个 EJB
【发布时间】:2013-03-05 07:56:46
【问题描述】:

我正在我的持久性模型上编写 bean 验证。我需要调用我的 EJB Bean 以便从 DB 中检索一些配置参数。我怎样才能做到这一点?

我尝试将我的 EntityValidator 标记为 @Stateless 和 @LocalBean,但 JBoss 仍然将我的 EntityValidator 视为 POJO。我能做点什么吗?或者,我如何从 POJO 中检索 EJB。

【问题讨论】:

    标签: java jakarta-ee jboss jpa-2.0 bean-validation


    【解决方案1】:

    从 Bean Validation 1.0 开始,您无法将 EJB 注入开箱即用的验证器中。不过,这将在 Bean Validation 1.1 中发生变化。

    目前你有以下几种可能:

    • 通过 JNDI 检索 EJB:MyEjb myEjb = InitialContext.doLookup(myEjbName);
    • 实现一个自定义 ConstraintValidatorFactory,它将 EJB 引用注入到创建的验证器对象中
    • 使用Seam Validation,它使用@Inject 启用验证器对象的依赖注入(免责声明:我是Seam Validation 的作者)

    使用 Bean 1.1 这将成为可能out of box

    【讨论】:

    • 我们正在使用 CODI 对 CDI bean 做同样的事情。我猜这个实现类似于Seam-Validation。
    【解决方案2】:

    目前,注入在验证器中不起作用。

    我已经read 表示有计划在未来扩展 bean 验证以完全启用该行为。

    但是,应该有像seam或deltaspike这样的扩展,可以让你提供注入。

    检查这个: injection in validators

    【讨论】:

    • CODI 和 Seam3 都支持它。由于两者都合并到 DeltaSpike,我猜他们会支持相同的。我们更喜欢 CODI 和 DeltaSpike,因为它们经过了很多环境的测试,并且占用空间极小。
    【解决方案3】:

    我认为 jboss 不会将您的 bean 注入 JPA 验证器。

    您可以使用 JDNI 为 POJO 查找 EJB。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多