java - @Resource 注释成员未注入(inject) - 错误代码或错误?

标签 java servlets annotations websphere

我在 ServletContextListener 的 contextInitialized(...) 方法中实例化的类中使用 @Resource 注释,但该成员始终为 null。这是我的示例代码。

听众:

public void contextInitialized(ServletContextEvent sce) {
  System.err.println("In contextInitialised");
  new ResourceListenerTargetTest().executeMe(); 
}

ResourceListenerTargetTest:

@Resource(name="MyJDBCResource")
private DataSource source;
public void executeMe() {

  /*try {
    InitialContext ictx = new InitialContext();
    source = (DataSource)ictx.lookup("java:comp/env/MyJDBCResource");
  } catch (NamingException e) {
  e.printStackTrace();
  }*/

  System.err.println("source is " + source);
}

如果我切换评论并运行手动资源查找,它工作正常。

当在 contextInitalized 方法中使用时,@Resource 注释应该像这样工作吗?

Appserver 是 WAS 7.0.0.5,如果它应该 工作那么我猜这是一个错误?谁能证实一下?

最佳答案

该死的。 Bug .

Webcontainer code is initializing the servlet before injection targets are retrieved from the injection engine. As a result, if servlet initialization is dependent upon an injected resource, problems can occur.

因此,由于在加载任何 servlet 之前调用了 contextInitialized,因此必须存在相同的问题。

关于java - @Resource 注释成员未注入(inject) - 错误代码或错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745972/

相关文章:

java - 带 Debug模式的 Spring 启动但禁用了自动配置报告

servlets - 网络应用程序 web.xml 错误

java - Eclipse 在哪里打印它在注释处理器中输出的消息?

android - android @TargetApi注解是什么意思

java - 在 Android 上使用 Camera API2 进行基于触摸的对焦

java - 链接列表 add(i, x) 方法的代码审查

java - Java Servlet-共享的可变 session 数据

java - 完成 HttpServletResponse 但继续处理

java - 命令行加载时编织

java - EJB + 谷歌应用引擎