我有一个以ServletContextListener启动的应用程序。这个weblistener注入一个可调用的对象,并调用call方法,这个例子简化了它。
str
masterModule调用另一个注入对象的进程方法,如下所示。在这个过程对象中,我尝试通过会话bean访问一些业务逻辑。
@WebListener
public class StartupServletContextListener implements ServletContextListener {
@Inject
Instance<MasterModule> masterModules;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//Have a future object with the MasterModule
MasterModule m = masterModules.get();
try {
m.call();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
在process方法中,在TestModule中,我尝试通过会话bean访问一些业务逻辑。
public class MasterModule implements Callable<String> {
@Inject
private TestModuleI test;
@Override
public String call() throws Exception {
test.process();
return "";
}
}
public interface TestModuleI {
void process();
}
samplesession bean目前只是一个用于测试的普通sessionbean。 我的问题是,当我尝试在TestModuleImp中注入EJB时,我得到了在SO标题中编写的部署错误。我可以从servletContextListener注入EJB。我的beans.xml有bean-discovery-mode = all