JEE7: Managed-Beans und JSF Java Klassen auslagern


Umgebung

  • Wildfly 10
  • EE7

Nachdem ich im letzten Post das Auslagern im Bereich der EJBs beschrieben habe, folgt hier nun die Auslagerung von Java-Klassen im Beriech JSF, als nächster Schritt der Wiederverwendung von Teilen einer JEE 7 Web-Anwendung.

Auslagerung in jar-Dateien

Wenn für mehrere Projekte eine gleiche Basis von z.B. Sessionbeans oder JSF-Konvertern verwendet werden sollen, müssen diese nach Möglichkeit zentral in einem eigenen Projekt verwaltet und gepflegt werden, um die Wartbarkeit sicherzustellen. Für eine Nutzung in JSF-Projekten müssen diese „ausgelagerten“ Komponenten aus dem Web-Projekt zugreifbar sein. Wie meistens in Java, wird auch hier eine entsprechende jar-Datei mit den Komponenten erstellt.

Beim Deployment scannt der Anwendungsserver alle jar-Archive, die in dem META-INF Verzeichnis bekannte Konfigurationsdateien haben. Nur wenn eine solche Datei gefunden wird, wird diese ausgewertet und der Server sucht nach den entsprechenden Annotationen in den Klassen und stellt die Komponenten zur Verfügung. Eine erste Möglichkeit für das Einlesen der Komponenten aus einer deployten jar-Datei, ist es, eine gegebenenfalls leere

META-INF/beans.xml

Datei anzulegen. Diese hat den folgenden Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.2" bean-discovery-mode="annotated">
</beans>

Durch das Vorhandensein dieser leeren Konfigurationsdatei, scannt der Server die jar-Datei nach bekannten JSF Komponenten und verwendet diese. Alternativ kann auch eine minimale

/META-INF/faces-config.xml

Datei im jar-Archiv angelegt werden, die ebenfalls einen Scan auslöst.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
              version="2.2">
</faces-config>

Ablage

Das jar-Archiv selber kann entweder im lib-Verzeichnis des Web-Projekts oder bei einem ear auch in dem lib-Verzeichnis des ear abgelegt werden. Somit steht auch einer Modularisierung von JSF-Java-Klassen nichts mehr im Wege. Im nächsten Post wird gezeigt wie auch Ressourcen (z.B. Bilder), Templates und Include-Dateien ausgelagert werden können.

Du hast Fragen oder Anmerkungen? Kontakt: arndt@schoenb.de

,