Arndt Schönbergs Weblog

Dienstag Juni 02, 2020

JSF Kontextparameter Project Stage - Debugging

Der Parameter „Project Stage“ schaltet über die Werte „Development“ und „Production“ einige interne Optimierungen wie beispielsweise die Prüfung, ob neue xhtml Seiten compiliert werden müssen, ein oder aus (weitere Werte sind „SystemTest“, „UnitTest“).

<context-param>
    <param-name>javax.faces.validator.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
Auch eigene Auswertungen können hierüber gesteuert werden. Innerhalb von Java kann mit
Application.getProjectStage()
Auf den Wert zugegriffen werden. In xhtml Seiten kann der Wert z.B. zum rendern der Debug Informationen genutzt werden.
<ui:debug hotkey="L" rendered="#{facesContext.application.projectStage == 'Development'}" />
Nun möchte man allerdings im Allgemeinen keinen statischen Wert in der web.xml haben, sondern in Abhängigkeit von dem Build zwischen „Development“ und „Production“ umschalten. Hierfür definiert man Profile in Maven (integrations- und Release-Profile)
        <profile>
            <id>build-int</id>
            <properties>
                <jsfProjectStage>Development</jsfProjectStage>
            </properties>
        </profile>
	 
        <profile>
            <id>build-rel</id>
            <properties>
                <jsfProjectStage>Production</jsfProjectStage>
            </properties>
        </profile>
Diese definieren eine Variable mit der Stage Bezeichnung, die in der web.xml eingebunden wird
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>${jsfProjectStage}</param-value>
    </context-param>
Als letzter Schritt fehlt nun noch, dass im maven-war-plugin die „Filterung“ eingeschaltet wird. Dieser hier etwas unglückliche Begriff führt dazu, dass Variablen in der web.xml ersetzt werden.
...
<webResources>
    <resource>
        <filtering>true</filtering>
        <directory>web/WEB-INF</directory>
        <targetPath>WEB-INF</targetPath>
        <includes>
            <include>**/web.xml</include>
        </includes>
        </resource>
...

(SSL) Zertifikate in Java importieren

Selbst signierte Zertifikate (oder neue) können in den Java Keystore gelegt werden, damit sie z.B. für SSL Verbindungen ordentlich erkannt werden. Dafür wird das Tool „keytool“ verwendet, das sich im bin Verzeichnis des JDK befindet. Es aktualisiert die Dateien

lib\security\cacerts
Initial ist das Passwort für den Key-Store „changeit“. Wie folgt kann das Zertifikat „SelfSigned.cer“ mit dem Alias „AliasIfNeeded“ in den Store aufgenommen werden.
<Pfad zur Java Installation>/jdk11/jdk11.0.6_10/bin/keytool" -import -cacerts -file SelfSigned.cer -storepass changeit -alias AliasIfNeeded -noprompt

Calendar

Feeds

Search

Links

Navigation