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

yma*_*ros 5 java ejb java-ee

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

@Resource(name = "java:app/AppName")
private String appName;
Run Code Online (Sandbox Code Playgroud)

但是查找相同的名称会:

appName = (String) new javax.naming.InitialContext().lookup("java:app/AppName");
Run Code Online (Sandbox Code Playgroud)

我发现很多例子都有一个查找属性@Resource而不是名字.但是,我找不到任何相关的东西,我很有信心它应该是名字,前者不是规范的一部分.

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

she*_*ley 5

在这种情况下使用" lookup"而不是" name"是正确的,因为条目已经在java:app命名空间中定义,只是被查找而不是被定义.这是Java EE 6规范(Glassfish 3.1实现)的一部分:@Resource#lookup().

除了使用查找应用程序名称InitialContext,您还可以使用属性使用@Resource注释lookup:

@Resource(lookup = "java:app/AppName")
private String appName;
Run Code Online (Sandbox Code Playgroud)