这似乎不起作用(= 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。
答案 0 :(得分:5)
在这种情况下使用“lookup
”而不是“name
”是正确的,因为该条目已在java:app
命名空间中定义,而只是被查找,而不是比定义的。这是Java EE 6 specification(Glassfish 3.1实施)的一部分:@Resource#lookup()
。
使用InitialContext
查找应用名称的替代方法,您也可以使用@Resource
属性使用lookup
注释:
@Resource(lookup = "java:app/AppName")
private String appName;