{"id":171,"date":"2020-06-02T09:24:00","date_gmt":"2020-06-02T07:24:00","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=171"},"modified":"2022-12-05T09:24:17","modified_gmt":"2022-12-05T08:24:17","slug":"jsf-kontextparameter-project-stage-debugging","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=171","title":{"rendered":"JSF Kontextparameter Project Stage &#8211; Debugging"},"content":{"rendered":"\n<p>Der Parameter \u201eProject Stage\u201c schaltet \u00fcber die Werte \u201eDevelopment\u201c und \u201eProduction\u201c einige interne Optimierungen wie beispielsweise die Pr\u00fcfung, ob neue xhtml Seiten compiliert werden m\u00fcssen, ein oder aus (weitere Werte sind \u201eSystemTest\u201c, \u201eUnitTest\u201c).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;context-param&gt;\n    &lt;param-name&gt;javax.faces.validator.PROJECT_STAGE&lt;\/param-name&gt;\n    &lt;param-value&gt;Development&lt;\/param-value&gt;\n&lt;\/context-param&gt;\n<\/pre>\n\n\n\n<p>Auch eigene Auswertungen k\u00f6nnen hier\u00fcber gesteuert werden. Innerhalb von Java kann mit<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Application.getProjectStage()\n<\/pre>\n\n\n\n<p>Auf den Wert zugegriffen werden. In xhtml Seiten kann der Wert z.B. zum rendern der Debug Informationen genutzt werden.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;ui:debug hotkey=\"L\" rendered=\"#{facesContext.application.projectStage == 'Development'}\" \/&gt;\n<\/pre>\n\n\n\n<p>Nun m\u00f6chte man allerdings im Allgemeinen keinen statischen Wert in der web.xml haben, sondern in Abh\u00e4ngigkeit von dem Build zwischen \u201eDevelopment\u201c und \u201eProduction\u201c umschalten. Hierf\u00fcr definiert man Profile in Maven (integrations- und Release-Profile)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">        &lt;profile&gt;\n            &lt;id&gt;build-int&lt;\/id&gt;\n            &lt;properties&gt;\n                &lt;jsfProjectStage&gt;Development&lt;\/jsfProjectStage&gt;\n            &lt;\/properties&gt;\n        &lt;\/profile&gt;\n\t \n        &lt;profile&gt;\n            &lt;id&gt;build-rel&lt;\/id&gt;\n            &lt;properties&gt;\n                &lt;jsfProjectStage&gt;Production&lt;\/jsfProjectStage&gt;\n            &lt;\/properties&gt;\n        &lt;\/profile&gt;\n<\/pre>\n\n\n\n<p>Diese definieren eine Variable mit der Stage Bezeichnung, die in der web.xml eingebunden wird<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">    &lt;context-param&gt;\n        &lt;param-name&gt;javax.faces.PROJECT_STAGE&lt;\/param-name&gt;\n        &lt;param-value&gt;${jsfProjectStage}&lt;\/param-value&gt;\n    &lt;\/context-param&gt;\n<\/pre>\n\n\n\n<p>Als letzter Schritt fehlt nun noch, dass im maven-war-plugin die \u201eFilterung\u201c eingeschaltet wird. Dieser hier etwas ungl\u00fcckliche Begriff f\u00fchrt dazu, dass Variablen in der web.xml ersetzt werden.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">...\n&lt;webResources&gt;\n    &lt;resource&gt;\n        &lt;filtering&gt;true&lt;\/filtering&gt;\n        &lt;directory&gt;web\/WEB-INF&lt;\/directory&gt;\n        &lt;targetPath&gt;WEB-INF&lt;\/targetPath&gt;\n        &lt;includes&gt;\n            &lt;include&gt;**\/web.xml&lt;\/include&gt;\n        &lt;\/includes&gt;\n        &lt;\/resource&gt;\n...\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Der Parameter \u201eProject Stage\u201c schaltet \u00fcber die Werte \u201eDevelopment\u201c und \u201eProduction\u201c einige interne Optimierungen wie beispielsweise die Pr\u00fcfung, ob neue xhtml Seiten compiliert werden m\u00fcssen, ein oder aus (weitere Werte sind \u201eSystemTest\u201c, \u201eUnitTest\u201c). &lt;context-param&gt; &lt;param-name&gt;javax.faces.validator.PROJECT_STAGE&lt;\/param-name&gt; &lt;param-value&gt;Development&lt;\/param-value&gt; &lt;\/context-param&gt; Auch eigene Auswertungen k\u00f6nnen hier\u00fcber gesteuert werden. Innerhalb von Java kann mit Application.getProjectStage() Auf den Wert zugegriffen werden. [&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-171","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\/171","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=171"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":172,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions\/172"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}