對於大學項目,我正在使用JSF開發Web應用程序。我的運動是做前端。同學們應該做後端的事情。這兩個部分都是爲了看似應用而設計的。兩者都通過RMI進行通信。我想在部署時打開一次連接。JSF2:如何在部署時啓動服務
我現在要解決這個問題了。我試圖用@ApplicationScoped ManagedBean來做到這一點:
//Constructor of ApplicationScoped ManagedBean
public Communication() {
this.connect();
}
就是這樣嗎?我試過了,但managedBean似乎不叫..
你能建議一個最佳實踐嗎?
@布賴恩:不幸的是我根本就不-.-
@ BalusC的鍋使用EJB: 我創建了一個communicationbean:
@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是空的!它尚未創建!怎麼做?我認爲通過managedproperty引用會創建它 - 。
嘗試簡單的方法,並把託管物業放在那裏,但沒有 不工作-.- – Sven 2011-01-09 11:22:17
託管的屬性設置* * *後的bean建設,而不是*之前*。你需要'@ PostConstruct'來訪問它們。用'@PostConstruct public void init()'替換'public Login()'。 – BalusC 2011-01-09 12:05:29