依存性注入を使用して、いくつかのejb(ステートレスおよびシングルトン)からイベントを起動する必要があります。私はSpring、Guiceなどを使用していません。 問題はgetInstance()でメソッドを呼び出すときにBeanの1つでNPEを取得することです。ここでは、コードスニペットは次のとおりです。ここでシングルトンCDI @Injectヌルポインタ例外
@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>
私はからイベントを発生時に何のNPEはありませんSender(@Schedule(時= ""、分= ""、秒= 1)によってMainDay.initDS()のような静的メソッドの呼び出しまたはstartDay "/10")*。 私は@Singleton
はあなたはそれを自分で作成しないでくださいすなわち、コンテナは(EJBまたはCDIは、それがどの注釈に依存)のインスタンスを管理することを意味している理由
ありがとう、トーマス!その今はっきりとそれが動作します:) – Buch