2016-09-23 2 views
0

Я пытаюсь разработать очень простое приложение на основе работающего потока, создающего сущности в БД каждую секунду в JavaEE на сервере Glassfish4.Ввод EJB в автоматический таймер EJB возвращает null

Я использую автоматический таймер, где я вставляю EJB, управляющий постоянством.

Таймер Service является следующий:

@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

@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 приложение останавливается с NPE в методе создания. Что я делаю не так?

ответ

0

Из фрагментов кода, приведенных выше, я не вижу, как вводится EntityManager, и поскольку вы говорите об NPE, проблема может лежать там.

Также избегайте @Singleton (s), если вы не сохраняете состояние в своих компонентах. По умолчанию ваш public void doWork() связан с автоматической блокировкой записи.

+0

Проблема не в EntityManager, так как при отладке кода я вижу, что переменная measureEjb равна null. В любом случае я добавлю код Entity как можно скорее – sthor69

Смежные вопросы