Ich habe zwei Systeme, die ich integrieren möchte. Einer basiert auf rohen Servlets, der neue auf JSF mit IceFaces. Ich versuche, die systemübergreifende Anmeldung zu erleichtern. Die Idee ist, dass ich eine Schaltfläche im alten System habe, die die entsprechenden Informationen an die neue Site sendet und sie anmeldet.Erstellen eines Faces Context manuell
Nun, im Idealfall würde ich nur ein normales altes Servlet verwenden, um dies auf der neuen Website zu erleichtern. Gehen Sie zum Servlet der neuen Website, tun Sie, was Sie tun müssen, und gehen Sie auf das Dashboard.
Unsere Sicherheit wird über eine gemanagte Bean gehandhabt. Wenn Sie jedoch das Servlet erreichen, gibt es keinen Kontext für Gesichter. Wie würde ich also einen Kontext für neue Gesichter erstellen?
Ich habe einen Backup-Plan in dem ich immer auf eine Dummy .iface-Seite verlinken kann, die den FacesContext für mich erstellen und dann eine Backing-Bean erstellen wird, die Sachen macht, wenn es instanziiert und dann auf die Hauptseite weitergeleitet wird . Aber das fühlt sich sehr nach einem Hack an.
Jede Hilfe wäre willkommen!
EDIT: Ich ging mit dem Back-up-Weg. Grundsätzlich schreibe ich auf eine Seite wie folgt:
<f:view>
<ice:outputText value="#{EntryPoint}"/>
</f:view
Die Backing Bean wie so suchen ...
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);
}
}
Dieses immer noch wie ein Hack fühlt, aber ich bin nicht sicher, wie zu umgehen Dies. Im Idealfall würde ich an ein Servlet POST senden, die loginID abrufen, den Benutzer erstellen und ihn direkt in die Managed Bean schreiben. Aber der FacesContext existiert zu diesem Zeitpunkt nicht.
Irgendwelche anderen Ideen?
Die zweite ist die Antwort, nach der ich suchte, und die erste war mein Ersatzplan, wenn ich den ersten nicht herausfinden konnte. Die Idee war, dass die ältere Servlet-Site (ihre eigene Webapp- und WAR-Datei) den Benutzer mit einem POST und Anmeldeinformationen an die neue Webanwendung umleiten würde. Gibt es einen besseren Weg, dies zu tun? – Drew