Ich denke, das Problem aufwirft, weil ich nicht etwas mit EJBs bekommen haben. Ich habe eine Serviceklasse für meine Entität, die @Stateless ist. Als ich es verwenden, indem Sie mit @EJB in meinem Sitzung scoped Präsentationsmodell injiziert, ist alles ok. Aber jetzt wollte ich diese EJB-Dienst verwenden in einem Datamodel I zur Verwendung in meinem Vortrag Modell überschrieben haben:Nullpointer wenn EJB in Java Injektion Klasse
public class LazyUserDataModel extends LazyDataModel<User> {
@EJB
private UserService service;
@Override
public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
List<User> users;
users= service.findAllUsers();
this.setRowCount(users.size());
return users;
}
}
Bei der Ausführung erhalte ich eine Nullpointer an Position „users = service.findAllUsers();“ Das gleiche funktioniert, wenn ich überschreibe dieses Datenmodell in meinem Vortrag Modell:
@Named
@SessionScoped
public class UserPM {
@EJB
private UserService service;
private LazyDataModel<User> lazyUsers;
public UserPM() {
// Don't works
//lazyUsers = new LazyUserDataModel();
lazyUsers = new LazyDataModel() {
@Override
public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
List<User> users;
users = service.findAllUsers();
this.setRowCount(users .size());
return users ;
}
};
}
}
Ist es nicht möglich, ein EJB in einer normalen Java-Klasse zu injizieren? Was muss ich tun, dass ich das DataModel nicht im Präsentationsmodell definieren muss?
Dank
Versuchen Sie, Ihr BeanInterface in die EJB-Anmerkung einzufügen. Ich habe das gleiche Problem vor einiger Zeit und das hat es behoben. '@EJB (beanInterface = YourInterface.class)' – ZeusNet