我有一个问题,在Quartz计划作业中注入CDI Bean。这是工作级别的代码。
import javax.inject.Inject;
import lombok.extern.java.Log;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.example.controller.UserController;
@Log
public class SomethingNewScheduler implements Job {
@Inject
UserController userController;
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
userController.doSomething();
}
}
我的UserController定义如下:
import java.io.Serializable;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import lombok.extern.java.Log;
import de.example.dao.UserDao;
@Log
@ApplicationScoped
public class UserController implements Serializable {
private static final long serialVersionUID = 5922763136823308273L;
@EJB
private UserDao userDao;
public void example(){
userDao.getSomething();
}
}
当我尝试访问SomethingNewScheduler中的userController时,我得到一个NullPointerException。在SomethingNewScheduler中实现Serializable并没有解决问题。
我正在为我的应用程序使用Wildfly 8.2.0。在RestService中访问UserController非常合适。
有没有人知道,为什么它在这里不起作用?