我有兩個系統正在嘗試集成。一個基於原始的servlet,新的基於JSF和IceFaces。我正試圖促成跨系統登錄。這個想法是,我在舊系統中有一個按鈕,將適當的信息發佈到新站點並記錄下來。手動生成Faces上下文
那麼,理想情況下,我想只使用一個普通的舊servlet來方便在新網站上。轉到新網站的Servlet,完成它需要做的事情並轉發到儀表板。
我們的安全性是通過託管bean處理的。但是,到達Servlet的時候,沒有任何面部上下文。那麼,我將如何創建一個新的面孔環境?
我有一個備份計劃,我可以隨時鏈接到一個虛擬的.iface頁面,它將爲我創建FacesContext,然後創建一個支持bean,當它獲得實例化時會做些什麼,然後轉發到主頁面。但是這感覺非常像黑客。
任何幫助,將不勝感激!
編輯:我走了回去的路。基本上,我張貼到網頁,像這樣:
<f:view>
<ice:outputText value="#{EntryPoint}"/>
</f:view
的支持bean看起來像這樣...
public EntryPoint() {
try {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
String loginID = request.getParameter("loginID");
//Do some code to load the user/permissions
response.sendRedirect(
//The appropriate page
);
} catch (IOException ex) {
logger.error(null, ex);
} catch (SQLException ex) {
logger.error(null, ex);
}
}
這仍然感覺就像一個黑客,但我不知道怎麼去解決這個。理想情況下,我將POST發送到servlet,獲取loginID,構建用戶並將其直接放入托管bean中。但是,這個時候FacesContext並不存在。
還有其他想法嗎?
第二個是我正在尋找的答案,第一個是我的備份計劃,如果我不知道第一個。 這個想法是遺留的Servlet站點(它自己的Web應用程序和WAR文件)將使用POST和憑證將用戶重定向到新的webapp。有一個更好的方法嗎? – Drew 2009-02-27 03:43:18