我有两个系统正在尝试集成。一个基于原始的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