JNDI注入应用程序名称不起作用,查找确实如此

时间:2012-01-30 11:46:41

标签: java java-ee ejb

这似乎不起作用(= null):

@Resource(name = "java:app/AppName")
private String appName;

但查找相同名称的确如此:

appName = (String) new javax.naming.InitialContext().lookup("java:app/AppName");

我发现许多示例在@Resource中有 lookup 属性,而不是 name 。但是,我找不到任何相关内容,我非常有信心它应该是 name 不是规范的一部分。

仅供参考,我正在使用Glassfish 3.1,我正在从单个bean中的@PostConstruct方法访问appName。

1 个答案:

答案 0 :(得分:5)

在这种情况下使用“lookup”而不是“name”是正确的,因为该条目已在java:app命名空间中定义,而只是被查找,而不是比定义的。这是Java EE 6 specificationGlassfish 3.1实施)的一部分:@Resource#lookup()

使用InitialContext查找应用名称的替代方法,您也可以使用@Resource属性使用lookup注释:

@Resource(lookup = "java:app/AppName")
private String appName;