在 OmniFaces @Eager bean 中注入 @EJB 会导致“严重:没有用于注入 org.omnifaces.cdi.eager.EagerBeansRepository 的有效 EE 环境”

2024-01-11

Using @ApplicationScoped @Named @Eager, my @EJB-注入@Statelessbeans 未正确实例化并评估为null.

我有一个@ApplicationScoped @ManagedBean(eager=true)它被用来安排一些工作。一些@Stateless豆子被注入使用@EJB注释,效果很好。

在转向 CDI 注释时,我添加了OmniFaces@Eager http://showcase.omnifaces.org/cdi/Eager注释作为替代@ManagedBean(eager=true)标准 CDI 中缺少以下内容:

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.omnifaces.cdi.Eager;

@Named
@ApplicationScoped
@Eager
public class MyScheduler implements Serializable {

    @EJB
    private MyService myService;
    @Inject
    private MyNamedBean myNamedBean;

    @PostConstruct
    public void init() {
        setupSchedulers();
    }

    @PreDestroy
    public void destroy() {
        destroySchedulers();
    }
    //...
}

使用此设置,@PostConstruct方法在应用程序启动时正确调用(尽管它似乎甚至在初始化上下文之前就运行了),但随后myService评估为null.

在日志中,出现以下警告:

Severe:   No valid EE environment for injection of org.omnifaces.cdi.eager.EagerBeansRepository
Severe:   No valid EE environment for injection of my.package.MyScheduler
Info:   Initializing Mojarra 2.2.8 ( 20140814-1418 https://svn.java.net/svn/mojarra~svn/tags/2.2.8@13507) for context '/tagific'

由于我需要从其他 bean 访问此 bean,因此我无法使用@Singleton and @Schedule注释。

我怎样才能正确注射@Stateless豆子在一个@Named将在应用程序启动时实例化的应用程序作用域 bean?


这看起来像是 GlassFish 中的初始化排序错误。这@Eager @ApplicationScoped运行在ServletContextListener。显然此时 GlassFish 还没有准备好注入 EJB。该结构适用于例如野蝇。

然而,以 CUDI 统一整个 Java EE 中各种不同依赖注入方法的名义,您也可以只使用@Inject代替@EJB。 CDI代理能够进一步向右授权@Stateless实例。

@Inject
private MyService myService;

您还可以使用@Inject在 EJB 本身内部,但截至目前(Java EE 7),它还不支持自引用,例如@Asynchronous方法。为此你还得坚持@EJB.


也就是说,您是否知道 Oracle 停止了对 GlassFish 的商业支持,并且您最好不要将其用于生产环境?也可以看看这个博客 http://blog.arungupta.me/2013/11/glassfish-commercial-is-dead-wildfly-and-jboss-eap-to-rescue/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OmniFaces @Eager bean 中注入 @EJB 会导致“严重:没有用于注入 org.omnifaces.cdi.eager.EagerBeansRepository 的有效 EE 环境” 的相关文章

随机推荐

  • 禁用用户通过电子邮件确认后Keycloak自动登录

    我们将 keycloak KC 与自定义提供程序一起用于注册流程 在注册流程结束时 在将确认电子邮件发送给用户之前 作为默认 KC 功能 我们会禁用该用户 因为它适合我们的用例 当用户单击电子邮件确认时 邮件将被确认并且用户将自动登录 尽管
  • 实例方法和实例变量的线程安全

    我想知道类的每个实例是否都有该类中方法的自己的副本 可以说 我有以下课程MyClass public MyClass private String s1 private String s2 private String method1 St
  • HTML/CSS 中是否有等效的 XAML 网格元素?

    我对 WPF XAML 等有很深的经验 但是 我需要用 HTML CSS JS 创建一些东西 在 WPF 和 Silverlight 中 有一个非常通用的元素 那就是 网格 它本质上是一个托管任何类型的视觉对象的列表 这些对象将根据行 列集
  • 实时音频流套接字卡在浏览器中

    我正在尝试设置一个可以收听多个 私人 流的页面 不幸的是我无法让它运行 我试过使用php在android上打开实时音频流 https stackoverflow com questions 11472997 using php to ope
  • 如何在Python中使用XPath?

    支持 XPath 的库有哪些 有完整的实施吗 图书馆如何使用 它的网站在哪里 libxml2 http xmlsoft org python html具有许多优点 遵守spec http www w3 org TR xpath 积极发展和社
  • Java开发工具包中的jar.exe在哪里? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从以下位置下载并安装了 JDKJava SE 开发工具包 7 下载 http www oracle com technetwork ja
  • 带有模板函数名称并传递参数和返回值的可变参数模板

    以下来自this https stackoverflow com questions 39558976 variadic templates with template function names 39570187 noredirect
  • ggplot折线图中的多行x轴标签

    Edit 该问题已被标记为重复 但回复here https stackoverflow com questions 18165863 ggplot2 labels of grouping values below the plot已尝试但没
  • AWS Elasticsearch 作为主数据库

    我正在开发一个需要存储大量交易 每天 200 万笔 并需要对其进行全文搜索的应用程序 我需要保存至少 10 年的数据 考虑到性能和数据完整性 我可以使用 aws elasticsearch 作为我的项目的数据库吗 一如既往 这取决于 这取决
  • apc.按路径过滤?

    如何在 APC 操作码缓存中使用 apc filters 参数来不缓存某些路径 例如 我希望缓存对路径下的任何内容都处于活动状态 var www vhosts 并排除类似的路径 usr share psa horde 我尝试使用 apc c
  • 查找所有点对之间的欧氏距离

    我的列表中有 8 个点 我需要计算所有可能对之间的欧氏距离 我可以编写一个 for 循环并继续计算距离 但是 python numpy 其他有更好的方法 方法吗 坐标点 x1 y1 x2 y2 x3 y3 xn yn 是的 您可以使用euc
  • css 锚定 div 到页面底部

    我可能很快就会把头从墙上弹下来 我不敢相信像这样愚蠢的事情完全打败了我 因此我向你求助 Stack Overflow 寻求指导和启发 Problem 将 div 放置在页面底部 宽度为 100 位于任何类型的包装器之外 建议的解决方案 ht
  • 需要帮助使用嵌套模型的 DefaultModelBinder

    有一些相关的问题 但我找不到有效的答案 假设我有以下模型 public class EditorViewModel public Account Account get set public string SomeSimpleStuff g
  • Xcode 4 中的目标成员资格是什么

    我正在寻找 Xcode 中目标成员资格的示例 我对它的确切含义有点困惑 例如 我有两个不同的目标会员资格 myApp 和 myAppTests 如果我指定一个文件 例如 myAppFile h 作为 myAppTests 的一部分而不是 m
  • 如果提供的刻度只有 1 个结果,D3ticks() 不会返回值

    我有一个 x 轴 显示我的数据发生的日期 数据是动态的 有时我只有 1 天 2 天 n 天等的数据 这是我在 x 轴上显示日期的代码 chart x d3 time scale range 0 chart w chart xAxis d3
  • 在 Android 中以编程方式创建平行四边形 Drawable

    我正在尝试重新创建在 Ice Cream Sandwich 中看到的切换幻灯片 但不适用于 ICS 以下的 Android 版本 我现在对滑块感到满意 但是我目前使用两个平行四边形图像 一个用于其关闭状态 一个用于其打开状态 我想理想地在运
  • 在 Java 中使用 Nashorn?

    我正在阅读有关 Java 8 新功能的信息 并了解到它带有 Nashorn Javascript 引擎 有人可以解释一下为什么我会 应该在 Java 中使用 Javascript 引擎吗 它能解决什么编程问题 任何例子 谢谢 拉维 简而言之
  • Android O+:某些手机似乎缺少更改通知声音类型的选项

    再次关于Android O 上的通知声音 有些手机的 通知设置 窗口不显示声音选择按钮 甚至不显示振动按钮 这里有几个例子 三星A5 华为荣耀View 10 不是小品牌 我会说 他们在 Android 8 上使用 Gmail 应用程序 菜单
  • 一个应用程序中包含多个浏览器外应用程序

    我正在考虑一个场景 我需要创建一个 主 Silverlight 应用程序 然后为浏览器外的 Silverlight 应用程序添加 子 应用程序 场景是这样的 用户将访问游戏板网站 并选择要玩的游戏 我们打电话吧 它跳棋 他喜欢 所以他 将浏
  • 在 OmniFaces @Eager bean 中注入 @EJB 会导致“严重:没有用于注入 org.omnifaces.cdi.eager.EagerBeansRepository 的有效 EE 环境”

    Using ApplicationScoped Named Eager my EJB 注入 Statelessbeans 未正确实例化并评估为null 我有一个 ApplicationScoped ManagedBean eager tru