Start Initialisierung

Problem

Oft möchte man beim Start einer JSF Applikation eine Methode ausführen oder ein Objekt in den Application Scope legen. Früher hat man das in der Methode HttpServlet.init() erledigt was bei einer JSF Anwendungen nicht möglich ist.

Lösung

Registrierung eines zweiten Servlet, das nur notwendige Initalisierungen für die Web Applikation durchführt. Mit dem Parameter load-on-startup in der Datei web.xml definiert man, dass das Initialisierungs Servlet vor dem JSF Servlet gestartet werden soll.

<servlet> <servlet-name>JSF Initialization Servlet</servlet-name> <servlet-class>de.icoding.controller.InitServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet>

Für das Initialisierungs Servlet wird kein Servlet Mapping definiert.

Mit der Methode ServletContext.setAttribute(key,object); kann man im Initialisierungs Servlet spezielle Objekte in den Application Scope legen. Auch Scheduler können hier als separate Threads gestartet werden.

Resourcen

[1] JSF 1.2
[2] web.xml

Autor: Johannes HammoudKommentare Datum: 07.06.2008

Sprache Englisch

Java JSF XHTML WML JavaScript GlassFish MySQL NetBeans

Impressum

Besuche
619858
Heute
20