In einer JSF1.2 WebApp soll bei jedem Request derselbe Programmcode ausgeführt werden. Darin soll mit den Requestparametern und der Session gearbeitet werden.
Könnte mir bitte jemand von euch einen Tip geben, wie ich das erreichen kann?
speziell zu JSF kann ich nichts sagen, aber in einfachen Servlets gedacht helfen Basisklassen mit nur einer doGet()-Methodenimplementierung
oder im Notfall Methodenaufrufe bei jedem Einstieg des eigenen Programms, dann muss man schlicht dazu aufpassen,
idealerweise alle solche notwendigen separaten Klassen zu Statisten/ Schalen degradieren und allein mit einer Aufgabe ausstatten:
Aufruf einer Methode der RICHTIGEN Klasse(n), die dann mit Basisklasse usw. sauber aufgebaut sind,
bei einem WebRequest bietet es sich absolut an, am Anfang (und Ende) gemeinsame Funktionalität zu haben:
Session, User, Berechtigungen des Users/ der angefragten Seite prüfen, Parameter prüfen/ umwandeln (von simpler Session/ Parameter-Liste zu komplizierten Anwendungsobjekt),
aktuelle Aktion im Kontext vorherigerer Aufrufe/ laufender größerer Vorgänge prüfen, Hintergrunddaten dafür evtl. reaktivieren/ mergen,
evtl. mit Fehler ablehnen und zu Fehlerseite/ Startseite verweisen, Loggen,
um Ressourcen wie DB-Sessions kümmern (nicht unbedingt gleich anfordern, aber Kontrollstrukturen dafür aufbauen) und wer weiß was alles,
da bin ich ein Fan
vieles davon sicher auch Aufgabe des Frameworks, aber sobald das nicht 100% funktioniert bzw. nach Wünschen konfigurierbar ist, ist man aufgeschmisssen,
immer eine Gradwanderung wieviel man selber übernimmt,
intessanter Meta-Gedanke dann immer evtl. Wechsel auf anderes Framework, wieviel funktioniert dann noch da unabhängig, wieviel nicht?
Meta-Meta-Gedanke ist dann allerdings Schaffung eines eigenen x-ten Standards…
aber ich bin wohl etwas übers Ziel hinausgeschossen
Konkret geht es um eine WebApp, welche schon seit 12 Jahren existiert. Alle Requests werden an ein dickes FrontControllerServlet gerichtet, welches die Requests zerpflückt und zum Schluss einen RequestDispatcher.forward() macht. Forwarded wird immer auf eine JSP, welche den Maincontent, durch einen jsp:include anzeigt.
Jetzt will ich JSF1.2 (Kompatibilität) in dieser App einsetzen, aber wenn der jsp:include eine JsfSeite anzeigen soll, dann erhält man einen: Cannot forward after response has been committed. D.h. mein Controller und der Controller vom JSF pfuschen sich gegenseitig in die Arbeit.
Optimal wäre es, wenn man eine Methode einer z.B. ManagedBean bei jedem Request durchlaufen lassen könnte.
Konkret geht es um eine WebApp, welche schon seit 12 Jahren existiert. Alle Requests werden an ein dickes FrontControllerServlet gerichtet, welches die Requests zerpflückt und zum Schluss einen RequestDispatcher.forward() macht. Forwarded wird immer auf eine JSP, welche den Maincontent, durch einen jsp:include anzeigt.
Jetzt will ich JSF1.2 (Kompatibilität) in dieser App einsetzen, aber wenn der jsp:include eine JsfSeite anzeigen soll, dann erhält man einen: Cannot forward after response has been committed. D.h. mein Controller und der Controller vom JSF pfuschen sich gegenseitig in die Arbeit.
Optimal wäre es, wenn man eine Methode einer z.B. ManagedBean bei jedem Request durchlaufen lassen könnte.[/QUOTE]
Die Methode beißt sich einfach mit dem ganzen JSF-Lifecycle, ich würde den funkionierenden Teil nicht mehr anrühren, sondern lieber JSF parallel verwenden. Wenn nötig, Teile aus dem alten Frontcontroller refactorn und als unabhängige Funkionalität zur Verfügung stellen.