{"id":110,"date":"2016-09-05T11:57:58","date_gmt":"2016-09-05T09:57:58","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=110"},"modified":"2022-12-04T11:58:24","modified_gmt":"2022-12-04T10:58:24","slug":"jee7-managed-beans-und-jsf-java-klassen-auslagern","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=110","title":{"rendered":"JEE7: Managed-Beans und JSF Java Klassen auslagern"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Umgebung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wildfly 10<\/li>\n\n\n\n<li>EE7<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem ich im letzten <a href=\"https:\/\/www.schoenberg-solutions.de\/roller\/arndtsBlog\/entry\/jee7-mehrere-archive-f%C3%BCr-entit%C3%A4ten\" target=\"_blank\" rel=\"noreferrer noopener\">Post<\/a> das Auslagern im Bereich der EJBs beschrieben habe, folgt hier nun die Auslagerung von Java-Klassen im Beriech JSF, als n\u00e4chster Schritt der Wiederverwendung von Teilen einer JEE 7 Web-Anwendung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Auslagerung in jar-Dateien<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn f\u00fcr mehrere Projekte eine gleiche Basis von z.B. Sessionbeans oder JSF-Konvertern verwendet werden sollen, m\u00fcssen diese nach M\u00f6glichkeit zentral in einem eigenen Projekt verwaltet und gepflegt werden, um die Wartbarkeit sicherzustellen. F\u00fcr eine Nutzung in JSF-Projekten m\u00fcssen diese \u201eausgelagerten\u201c Komponenten aus dem Web-Projekt zugreifbar sein. Wie meistens in Java, wird auch hier eine entsprechende jar-Datei mit den Komponenten erstellt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00fcgung. Eine erste M\u00f6glichkeit f\u00fcr das Einlesen der Komponenten aus einer deployten jar-Datei, ist es, eine gegebenenfalls leere<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">META-INF\/beans.xml\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Datei anzulegen. Diese hat den folgenden Inhalt:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;beans xmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\"\n       xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n       xsi:schemaLocation=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\/beans_1_1.xsd\"\n       version=\"1.2\" bean-discovery-mode=\"annotated\"&gt;\n&lt;\/beans&gt;\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Durch das Vorhandensein dieser leeren Konfigurationsdatei, scannt der Server die jar-Datei nach bekannten JSF Komponenten und verwendet diese. Alternativ kann auch eine minimale<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/META-INF\/faces-config.xml\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Datei im jar-Archiv angelegt werden, die ebenfalls einen Scan ausl\u00f6st.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;faces-config xmlns=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\"\n              xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n              xsi:schemaLocation=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\/web-facesconfig_2_2.xsd\"\n              version=\"2.2\"&gt;\n&lt;\/faces-config&gt;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Ablage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00e4chsten Post wird gezeigt wie auch Ressourcen (z.B. Bilder), Templates und Include-Dateien ausgelagert werden k\u00f6nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Umgebung 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\u00e4chster Schritt der Wiederverwendung von Teilen einer JEE 7 Web-Anwendung. Auslagerung in jar-Dateien Wenn f\u00fcr mehrere Projekte eine gleiche Basis von z.B. Sessionbeans oder JSF-Konvertern verwendet werden sollen, m\u00fcssen diese [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,7],"tags":[],"class_list":["post-110","post","type-post","status-publish","format-standard","hentry","category-jee","category-wildfly"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=110"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":111,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/110\/revisions\/111"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}