Tengo dos sistemas que intento integrar. Uno se basa en servlets sin procesar, el nuevo se basa en JSF con IceFaces. Estoy tratando de facilitar el inicio de sesión entre sistemas. La idea es que tengo un botón en el sistema anterior que PUBLICA la información apropiada al nuevo sitio y los inicia sesión.Generando un Contexto de Caras manualmente
Bueno, idealmente, me gustaría usar solo un servlet antiguo para facilitarlo en el nuevo sitio. Vaya al Servlet del nuevo sitio, haga lo que debe hacer y el reenvío al tablero.
Nuestra seguridad se maneja a través de un bean administrado. Sin embargo, cuando llega al servlet, no hay contexto de rostros. Entonces, ¿cómo crearía un nuevo contexto de caras?
Tengo un plan de respaldo en el que siempre puedo enlazar a una página ficticia .Face que creará el FacesContext para mí y luego creará un bean de respaldo que hará las cosas cuando sea instanciado y luego lo reenviará a la página principal . Pero esto se parece mucho a un truco.
¡Cualquier ayuda sería apreciada!
EDIT: Fui con el camino de regreso. Básicamente, he puesto a una página de este modo:
<f:view>
<ice:outputText value="#{EntryPoint}"/>
</f:view
El bean de respaldo que parece tan ...
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);
}
}
Esto todavía se siente como un truco, pero no estoy seguro de cómo moverse esta. Lo ideal sería POSTAR con un servlet, obtener el ID de inicio de sesión, crear el usuario y ponerlo directamente en el bean administrado. Pero, FacesContext no existe en ese punto.
¿Alguna otra idea?
La segunda es la respuesta que estaba buscando y la primera era mi plan de respaldo si no podía encontrar la primera. La idea era que el sitio de Servlet heredado (su propia aplicación web y el archivo WAR) redirigiría al usuario con un mensaje POST y credenciales a la nueva aplicación web. ¿Hay una mejor manera de hacer esto? – Drew