Я попытался внедрить Entity EJB (Facade и сущность из базы данных MySQL), но он не работает в зависимости от класса, в котором он находится. Я использую Rest WebService, и он работает в класс webService. Я использую многоуровневую архитектуру, и я не хочу, чтобы мой EJB был введен в этот веб-сервис.EJB injection не работает в разных классах
Итак, это @Stateless фасад:
public class ActivityEntityFacade extends AbstractFacade<ActivityEntity> {
@PersistenceContext(unitName = "persistance")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public ActivityEntityFacade() {
super(ActivityEntity.class);
}
}
это остальное метод WebService работы с EJB:
@EJB
private ActivityEntityFacade activityfacade;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{date}")
public List<ActivityEntity> activities(@PathParam("date") String date){
List<ActivityEntity> activityList = activityfacade.findAll();
return activityList;
}
И это мой activityManager, который, как предполагается, для работы с EJB и предполагается вернуть этот список на другой уровень:
public class ActivityManager implements Serializable, IActivity {
@EJB
private ActivityEntityFacade activityfacade;
public ActivityManager(){
}
public List<ActivityEntity> selectAll(){
return activityfacade.findAll();
}
}
Это snipet возвращение NullPointerException на activityEntityFacade. Вы не знаете, почему это не работает в этом случае?
EDIT: экземпляр activityManager создается в предыдущем слое:
class ServActivityConsult implements IActivable{
@Override
public List<ActivityEntity> activityList() {
IActivity managerActivity = new ActivityManager();
return managerActivity.selectAll();
}
public ServActivityConsult(){
}
}
Но ошибка приходят от возвращения activityfacade.findAll В ActivityManager в нашем случае.
Как вы получаете экземпляр ActivityManager? –