Для университетского проекта я разрабатываю веб-приложение с JSF. Мое упражнение заключается в том, чтобы сделать интерфейс. Однокурсник должен заниматься бэкендом. Обе части предназначены для просмотра приложений. Оба общаются через RMI. Я хочу открыть соединение один раз при развертывании.
Сейчас я наладил связь. Я попытался сделать это с помощью @ApplicationScoped ManagedBean:
//Constructor of ApplicationScoped ManagedBean
public Communication() {
this.connect();
}
Возможен ли такой путь? Я пробовал, но, похоже, не вызывается manageBean.
Можете ли вы посоветовать передовую практику?
@Brian: К сожалению, я вообще не использую EJB -.-
Горшок @BalusC: я создал коммуникационный компонент:
@ManagedBean(name="communication")
@ApplicationScoped
public class Communication {
public static FrontendCommInterface server;
public Communication() {
this.connect();
}
Затем я создал LoginBean:
@ManagedBean
@ViewScoped
public class Login {
@ManagedProperty(value="#{communication}")
private Communication communicationBean;
public FrontendCommInterface server;
private String username;
private String password;
public Login() {
server = communicationBean.getConnection();
}
public String login(){
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
String sessionId = session.getId();
try {
server.login(getUsername(), getPassword(), sessionId);
return "start.xhtml";
} catch (RemoteException e) {
e.printStackTrace();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Anmeldung nicht erfolgreich: ", getUsername()+", "+getPassword()+", "+sessionId));
return "login.xhtml";
}
}
Но, к сожалению, он выдает исключения:
com.sun.faces.mgbean.ManagedBeanCreationException: Klasse org.dhbw.stg.wwi2008c.mopro.ui.managedBeans.Login can not be instanciated.
java.lang.NullPointerException
org.dhbw.stg.wwi2008c.mopro.ui.managedBeans.Login.<init>(Login.java:28)
После отладки я обнаружил, что мое ManagedProperty равно Null! Он не создан! Как это сделать? Я думал, что ссылка через manageproperty создаст его -.-