Kategorie: JEE / Jakarta

  • Nur ein Tab / Browser in einer JEE / JSF Server Sitzung

    Nur ein Tab / Browser in einer Server Sitzung Ein häufiges Problem in webbasierten Serveranwendungen ist es, dass nicht geklärt werden kann, ob der Nutzer mehrere Tabs geöffnet hat und ggf. die Sitzungsdaten eines Vorgangs mit mehreren Tabs gleichzeitig verändert. Beim Zugriff von verschiedenen Browsern oder im privaten Fenster sind die Sitzungen auf dem Server…

  • Wildfly – JAX RS und selbst signierte Zertifikate

    In den meisten Entwicklungsumgebungen kommen selbst signierte Zertifikate zum Einsatz. Will man mit den Jackson, die Wildfly bereits bereitstellt auf solche Server zugreifen, ist einiges zu beachten. Zu Beginn sollten die Jackson Bibliotheken aus dem Wildfly in den Build eingebunden werden (grundsätzlich ist es eine gute Idee, die Bibliotheken von Wildfly auch in den Projekten…

  • 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.…

  • (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…

  • Primefaces: Meldungen werden nach der Action eines p:commandButton nicht angezeigt

    Folgende Situation: ein Command Button (wir arbeiten hier mit PrimeFaces 8) solle eine Anmeldung auslösen. Während dieser können Fehler auftreten, die in einem <p:growl /> oder <p:messages /> Element angezeigt werden sollen. Der Button sieht wie folgt aus: <p:commandButton value=”Registrieren/Anmelden” action=”#{myBean.registerLoginAction}” process=”login,password” update=”@form” /> Es wird die Action registerLoginAction der Backing Bean myBean ausgeführt. Die…

  • Detached Entities von JPA Abfragen

    Neulich ergab sich die Frage, wie man sicherstellen kann, dass die Objekte aus einer JPA Anfrage nicht attached sind, um dies nicht versehentlich zu verändern. Hierbei gibt es den “direkten Weg”. Direkter Weg Wir durchlaufen die Ergebnisliste und rufen für die Objekte die detach Funktion des Entitymanagers auf. Offensichtlich ist dieser Weg nicht sehr elegant.…

  • Umstellung JEE 8 auf Jakarta 8

    Um auf die zukünftigen freien Weiterentwicklungen vorbereitet zu sein, sollten die Maven Builds entsprechend angepasst werden. Da die Packages weitestgehend gleich geblieben sind, führt dies zu sehr wenig Änderungsaufwand im Quellcode. Es müssen folgende Dependencies ausgetauscht werden: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0</version> <scope>provided</scope> <dependency> wird zu <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>8.0.0</version> <scope>provided</scope> </dependency> Fragen und Anmerkungen Für…

  • Java Heap Dump erstellen und auswerten

    Umgebung Wenn der Speiche auf dem Server zu Neige geht, musst du dir überlegen, wie du analysierst wer wieviel Speicher verwendet. Eine Möglichkeit ist das Erzeugen von Heap Dumps, die den Speicher zu einem festen Zeitpunkt abbilden und dann ausgewertet werden können. Wenn es schon “zu spät” ist und der Server nicht stabil läuft, kann…

  • JSF Converter mit EJB Injection – JSF 2.3

    Gerade für Konverter war es schmerzlich, dass ein Injizieren von EJBs und anderen CDI Beans nicht möglich war. Mit JSF 2.3 kam nun endlich das notwendige Feature (wie auch für Validator und Behavior). https://javaserverfaces.github.io/whats-new-in-jsf23.html beschreibt die neuen Möglichkeiten und auch dass das Attribut „managed = true“ gesetzt werden muss. Verwendet man nun ausschließlich diese Informationen…

  • Spooky Exceptions (11) – … javax.ejb.EJBException: WFLYEJB0442: Unexpected Error

    Umgebung Situation Bei dem Aufruf einer JPA Query wird folgende Exception geworfen … javax.ejb.EJBException: WFLYEJB0442: Unexpected Error … Caused by: java.lang.StackOverflowError at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530) at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530) at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530) … Lösung Ursache dieser Exception ist eine lange Kette von WHERE Bedingungen (ca 2250) in einer JPQL Abfrage, die über Parameter befüllt werden. Es scheint hier Grenzen in…