java - 应用程序名称的 JNDI 注入(inject)不起作用,查找可以

标签 java jakarta-ee ejb

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

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

但是同名查找会:

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

我发现许多示例在 @Resource 中有一个 lookup 属性,而不是 name。但是,我找不到任何相关信息,我很确定它应该是 nameformer 不在规范中。

仅供引用,我使用的是 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/

相关文章:

java - Java EE7 和 CDI 2.0 的 Maven 依赖项是什么?

java - 没有加密的 sslengine 密码套件

java - JBoss MQ教程

java - 映射多对一外键 Java EE

linux - 无法访问 JBOSS

java - 布局显示不正确

Java:实例变量与局部参数

java - 重定向到公共(public)页面

java - 如何使用 JSF 从 javascript 调用 java 函数

java.lang.NoClassDefFoundError : org/codehaus/jackson/xc/JaxbAnnotationIntrospector