我在JBoss AS 7.1.1中有一个应用程序,并且想要使用TimerService。我这么注射:
@Resource
private TimerService timerService;
在访问应用程序中的页面时,会出现以下错误:
16:08:30,471 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/c3e].[Faces Servlet]] (http--127.0.0.1-8080-2) Servlet.service() for servlet Faces Servlet threw exception: javax.naming.NameNotFoundException: env/myapp.mypackage.MyClass/timerService -- service jboss.naming.context.java.module.myapp.myapp.env."com.dpdhl.cac.c3e.etl.beans.Resources".timerService
我已经尝试了其他几种方法,包括在InitialContext上注入SessionContext或使用lookup()来获取SessionContext,但它们都遇到了基本相同的问题。
我在这里缺少什么?
答案 0 :(得分:1)
问题解决了:我注入TimerService的bean必须是EJB,而不仅仅是CDI bean。我添加了
@Singleton
到bean的声明,现在可以正常工作。