尝试通过JNDI查找BeanManager时WELD-001300

时间:2014-12-27 11:12:12

标签: jetty cdi weld

我按照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

找到完整的测试代码

1 个答案:

答案 0 :(得分:0)

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

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