I want to use service layer in my @ManagedBean
class but i've got NullPointerException
.
Here is my interface
@Remote
public interface FieldService {
void insertField(Field field);
List<Field> getListOfFields();
Field getFieldByTitle(String title);
void removeField(Field field);
}
Here is my realization of this interface
@Stateless
public class FieldServiceImpl implements FieldService {
private FieldDao fieldDao = new FieldDaoImpl();
public void insertField(Field field) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
fieldDao.insertField(field, session);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
} finally {
closeSession(session);
}
}
public List<Field> getListOfFields() {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
return fieldDao.getListOfFields(session);
} catch (Exception e) {
return new ArrayList<Field>();
} finally {
closeSession(session);
}
}
public Field getFieldByTitle(String title) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
return fieldDao.getFieldByTitle(title, session);
} catch (Exception e) {
return null;
} finally {
closeSession(session);
}
}
public void removeField(Field field) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
fieldDao.removeField(field, session);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
} finally {
closeSession(session);
}
}
private void closeSession(Session session) {
if (Objects.nonNull(session)) {
session.close();
}
}
}
And here is my FieldManageBean
class`
@ManagedBean(name = "fieldManageBean")
@RequestScoped
public class FieldManageBean {
private Field field;
@EJB
private FieldService fieldService;
@PostConstruct
public void init() {
field = new Field();
}
public void addField() {
System.out.println(field);
fieldService.insertField(field);
}
public List<String> getFieldTypes() {
return Type.getStringListOfEnums();
}
public Field getField() {
return field;
}
public void setField(Field field) {
this.field = field;
}
}`
When I try to invoke addField()
function into my xhtml page, it gives me NullPointerException
here fieldService.insertField(field);
What's the problem?