这似乎不起作用(=null):
@Resource(name = "java:app/AppName")
private String appName;
但是同名查找会:
appName = (String) new javax.naming.InitialContext().lookup("java:app/AppName");
我发现许多示例在 @Resource
中有一个 lookup 属性,而不是 name。但是,我找不到任何相关信息,我很确定它应该是 name,former 不在规范中。
仅供引用,我使用的是 Glassfish 3.1,我正在从单例 bean 中的 @PostConstruct
方法访问 appName。
最佳答案
在这种情况下使用“lookup
”而不是“name
”是正确的,因为该条目已在java:app
中定义。命名空间,只是被查找,而不是被定义。这是 Java EE 6 specification 的一部分(Glassfish 3.1 实现): @Resource#lookup()
.
使用 InitialContext
查找应用程序名称的替代方法, 你也可以使用 @Resource
使用 lookup
的注释属性:
@Resource(lookup = "java:app/AppName")
private String appName;
关于java - 应用程序名称的 JNDI 注入(inject)不起作用,查找可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063380/