【问题标题】:WELD-001300 when trying to lookup BeanManager by JNDI尝试通过 JNDI 查找 BeanManager 时出现 WELD-001300
【发布时间】:2014-12-27 11:12:12
【问题描述】:

我按照Weld documentation 的描述配置了 Jetty 9.2.5 + Weld 2.2.7(目前是最新版本)。

一切正常,除了 JNDI 查找 BeanManager。其他 JNDI 条目的查找按预期工作。我收到了错误(注意这不是javax.naming.NameNotFoundException

javax.naming.NamingException: WELD-001300: Unable to locate BeanManager

我使用的代码:

BeanManager beanManager = null;
try {
    final Context ctx = new InitialContext();
    try {
        // JNDI name defined by spec
        beanManager = (BeanManager) ctx.lookup("java:comp/BeanManager");
    } catch (NameNotFoundException nf1) {
        try {
            // JNDI name used by Tomcat and Jetty
            beanManager = (BeanManager) ctx.lookup("java:comp/env/BeanManager");
        } catch (NameNotFoundException nf2) {
        }
    }
} catch (NamingException ex) {
    System.err.println(ex);
}
return beanManager;

完整的测试代码可以在https://github.com/rmuller/java8-examples/tree/master/jetty-maven-cdi找到

【问题讨论】:

  • 您没有env-entryBeanManager
  • 是的,我有:github.com/rmuller/java8-examples/blob/master/jetty-maven-cdi/…(从 Weld 文档页面复制)
  • 它在web-overwrite-jetty.xml 中(如文档中所述)。如果我把它移到web.xml,同样的问题仍然存在。但是请注意,我使用resource-env-ref 而不是env-entry,它不能用于引用类型afaik。所以现在我迷路了:)
  • 我再次仔细检查了所有代码并进行了一些修改,因此请查看更新的 repo 以获取详细信息。现在应该没问题,但报告的问题仍然存在。

标签: jetty cdi weld


【解决方案1】:

这与我在 Tomcat 7/8 和 Weld 2.2.6 中遇到的问题具有相似的症状。就我而言,它与 WELD 中的一个错误有关,该错误已在 2.2.7 中修复。所以它应该不会影响原始海报的设置。

https://issues.jboss.org/browse/WELD-1776

【讨论】:

  • 谢谢,但我不认为这个错误是相关的。 Weld 版本 2.2.9 和 3 (alpha1) 仍然存在我的问题。目前我不再使用 jdni 查找(使用CDI.current().getBeanManager()
猜你喜欢
  • 2018-08-25
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多