【问题标题】:@EJB and @Inject does not work for my vaadin class@EJB 和 @Inject 不适用于我的 vaadin 课程
【发布时间】:2015-06-08 08:42:41
【问题描述】:

我尝试将初始化 CustomerDataModel 的单例启动 bean 注入到 vaadin 类中。

@Startup
@Singleton
public class StartupBean {
   @Resource(lookup = "java:global/customerDatabase")
   private String customerDatabasePath;

   @Resource(lookup = "java:global/addressDatabase")
   private String addressDatabasePath;

   private CustomerDataModel dataModel = null;

   public StartupBean() {

   }

   @PostConstruct
   private void startup() {
       File customerDatabase = new File(customerDatabasePath);
       File addressDatabase = new File(addressDatabasePath);

       dataModel = new DataModelImpl(customerDatabase, addressDatabase);
   }

   @PreDestroy
   private void shutdown() {

   }

   public CustomerDataModel getDataModel() {
       return dataModel;
   }
}

这是我的 vaadin 类,它需要一个完全初始化的启动 bean

@DependsOn("StartupBean")
@Stateless
public class Workspace extends UI {
   @EJB
   private StartupBean startupBean;

   @WebServlet(value = "/*", asyncSupported = true)
   @VaadinServletConfiguration(productionMode = false, ui = Workspace.class)
   public static class Servlet extends VaadinServlet {
   }

   @Override
   protected void init(VaadinRequest request) {
   if(startupBean == null) {
      System.out.println("error");
   }

我用@EJB 和@Inject 试过了,都不管用。我总是在 startupBean 处得到一个空指针。我在 WEB-INF 也有一个 bean.xml

我按照http://java.dzone.com/articles/cdi-di-p1http://docs.oracle.com/javaee/6/tutorial/doc/gipvi.html试了一下

有谁知道我做错了什么?

【问题讨论】:

  • 请显示错误堆栈跟踪
  • 没有堆栈跟踪,因为 EJB 没有错误。它根本不注入startupbean,那么它就是空的。
  • 你能说明如何检查 null 吗?
  • 很抱歉缺少源代码。
  • 这只是暂时的调试。但困扰我的是注射似乎不起作用。我在 wildfly 和 tomcat 下运行它。

标签: java ejb vaadin7 inject


【解决方案1】:

问题是您的 Workspace 对象(扩展 Vaadin UI)不能是无状态 EJB。其中一个实例由一个用户使用。相反,您应该开始使用Vaadin CDI 并使用@CDIUI 对其进行注释。然后,您可以将 EJB 注入您的 CDI 托管(~会话范围)Vaadin UI。

【讨论】:

  • 感谢您的提示,我试了一下,但现在我从 wildfly 8.2 收到以下错误:
  • 嗯,看我上面的回答
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 2011-05-09
  • 2014-12-20
相关资源
最近更新 更多