0
Glassfish4サーバー上のJavaEEで1秒ごとにDB内のエンティティを作成している実行スレッドに基づいて非常に簡単なアプリケーションを開発しようとしています。EJBを自動タイマーに注入するEJBがヌルを返します
私は永続性を管理するEJBを注入する自動タイマーを使用しています。
タイマーサービスは、次のいずれかです。
@Singleton
@LocalBean
@Startup
public class UpdateEJB {
@EJB
MeasureEJB measureEjb;
@Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
public void doWork() {
measureEjb.create(new Measure());
}
}
EJBですが:
@Stateless
public class MeasureEJB {
@PersistenceContext(unitName = "smarthomePU")
private EntityManager em;
public Measure create (Measure _measure) {
em.persist(_measure);
return _measure;
}
}
エンティティ
@Entity
public class Measure implements Serializable {
@Id
private String time;
private int[] temp;
private boolean[] water;
public int[] getTemp() {
return temp;
}
public void setTemp(int[] temp) {
this.temp = temp;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public boolean[] getWater() {
return water;
}
public void setWater(boolean[] water) {
this.water = water;
}
private static final long serialVersionUID = 1L;
public Measure() {
super();
}
public Measure(int[] _temp, boolean[] _water) {
temp = _temp;
water = _water;
time = "";
}
}
しかし、私は中MeasureEJBを使用しようUpdateEJBアプリケーションは、createメソッドでNPEで停止します。私は間違って何をしていますか?
問題はEntityManagerではありません。コードをデバッグすると、変数measureEjbがnullであることがわかります。いずれにしても、エンティティのコードをすぐに追加します – sthor69