【发布时间】:2017-08-28 01:19:07
【问题描述】:
我需要使用依赖注入从一些 ejb(无状态和单例)中触发事件。我不使用 Spring、Guice 等。 问题是当通过 getInstance() 调用它的方法时,我在其中一个 bean 中得到了 NPE。这是代码sn-p:
@Stateless
@LocalBean
public class ControllerStartStop {
@Inject
private Event<SomeWebMessage> webEvent;
public String startCircle(String passwordP, String passwordH) {
.........
String res = "some msg";
webEvent.fire(new SomeWebMessage(res, 0)); // this works fine
MainDay.getInstance().startDay(); // NullPointerException
这是 MainDay 单例:
@Singleton
public class MainDay {
private static final MainDay mDay = new MainDay();
public static MainDay getInstance() { return mDay ; }
@Inject
private Event<SomeWebMessage> webEvent;
public void startDay() {
String s = new String("MainDay");
webEvent.fire(new SomeWebMessage(s,0)); // NullPointerException
beans.xml 在 META-INF 中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
</beans>
当我通过调用像 MainDay.initDS() 这样的静态方法或方法 startDay() 被 Sheduler (@Schedule(hour = "",分钟 = "",秒 = "/10")*。 不知道是什么原因
【问题讨论】:
标签: java nullpointerexception singleton cdi inject