Kategorie: JEE / Jakarta

  • JEE7: JSF Gui Komponenten auslagern

    Umgebung Neben den Java Klassen werden in einer Web-Anwendung auch die JSF-Darstellungskomponenten verwaltet. Dies sind ganze HTML-Seiten, Includes in XHTML-Seiten, Templates, Grafiken und andere Darstellungsbeschreibungen. Auch diese können in externe jar-Dateien ausgelagert werden. Bei der Bereitstellung gibt es Einschränkungen (vergl. Ende dieses Abschnitts), die aber keine Einschränkungen für die Entwicklung und die Auslagerung in separate…

  • JEE7: Managed-Beans und JSF Java Klassen auslagern

    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ä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…

  • JEE7: Mehrere Archive für Entitäten und EJB verwenden

    Umgebung Häufig ist es sinnvoll die Logik in Form von Entitäten und Stateless- / Stateful-EJBs (im Allgemeinen Facades) auf mehrere Archive zu verteilen. Beispielsweise kann so zwischen Basisklassen, die in mehreren Projekten verwendet werden, und Klassen, die speziell für ein Projekt entwickelt wurden, unterschieden werden. In der IDE und im Build sind dies Module/Projekte sauber…

  • Performance bei JPA Abfragen

    Umgebung Wenn keine providerspezifischen Hilfskonstrukte verwendet werden, werden alle JPA-Abfragen in eine SQL-Anweisung überführt und an die Datenbank gesendet. Ausnahmen sind lediglich die Abfragen direkt über find(id) und interne Abhängigkeiten in den Objekten, die auf den Second-Level-Cache zugreifen. Somit wird der Cache in weiten Teilen nicht genutzt. Dies hat zur Folge, dass bei Abfragen, die…

  • Wildfly – Pool-Size der Datenbankverbindungen

    Umgebung Pool-Size dfinieren Die standalone.xml, die mit Wildfly ausgeliefert wird, hat leider im Bereich Datasource keine Eintragungen für die Pool-Size. Daher vergisst man leicht, diese für produktive Systeme anzupassen. <datasource jndi-name=”java:jboss/datasources/ExampleDS” pool-name=”ExampleDS”> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> <driver>h2</driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> Um die Defaultwerte der relevanten Attribute herauszufinden, empfiehlt es sich auf der Seite https://wildscribe.github.io/Wildfly/10.0.0.Final/subsystem/datasources/xa-data-source/index.html nachzuschlagen. Dort…

  • Eclipselink JoinFetch – man muss wissen, was man tut

    Umgebung Eine Möglichkeit das 1:n Problem bei JPA Zugriffen zu lösen ist es, die abhängigen Werte einer Entität in einer Abfrage von der Datenbank zu bekommen. Hierfür bietet Eclipselink die Annotation @JoinFetch. @Entity public class Text2Translate extends Serializable { … @OneToMany(cascade = CascadeType.ALL, mappedBy = “…”, fetch = FetchType.EAGER) @JoinFetch(value = JoinFetchType.OUTER) private List<Translation> translations…

  • Sppoky Exceptions (4) – javax.servlet.ServletException: UT000047: The number of parameters exceeded the maximum of 1000

    Diese Meldung kann unter WIldfly (10) auftreten, wenn sehr viele Parameter auf eine JSF Seite erfasst werden müssen (z.B. Checkboxen, die an ein großes Array gebunden sind). Die Anzahl der Parameter kann in der undertow Konfiguration des Wildfly (standalone.xml) konfiguriert werden. <subsystem xmlns=”urn:jboss:domain:undertow:3.0″> <buffer-cache name=”default”/> <server name=”default-server”> <ajp-listener name=”ajp” socket-binding=”ajp”/> <http-listener name=”default” socket-binding=”http” redirect-socket=”https” max-parameters=”5000″…

  • Spooky Exceptions (3) – Internal Exception: org.postgresql.util.PSQLException: Der in SQL für eine Instanz von …. zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie ‘setObject()’ mit einem expliziten Typ, um ihn festzulegen.

    Die Anwendung, bei deren Entwicklung die Exception aufgetreten ist, basiert auf Folgende Exception wurde bei einer JPA Suchanfrage geworfen 09:54:31,868 INFO [stdout] (default task-55) [EL Warning]: 2016-02-26 09:54:31.868–UnitOfWork(1660853426)– Exception [EclipseLink-4002] (Eclipse Persistence Services – 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException 09:54:31,868 INFO [stdout] (default task-55) Internal Exception: org.postgresql.util.PSQLException: Der in SQL für eine Instanz von de.schoeso.desy.ejb.entity.hr.AccountingPeriod zu verwendende Datentyp…

  • Spooky Exceptions (2) – … [param_name] in the query’s selection criteria does not match any parameter name defined in the query

    Die Anwendung, bei deren Entwicklung die Exception aufgetreten ist, basiert auf Folgende Exception wurde bei einer JPA Suchanfrage geworfen 08:22:42,625 ERROR [org.jboss.as.ejb3.invocation] (default task-16) WFLYEJB0034: EJB Invocation failed on component DeliveryAraeaFacade for method public java.util.List de.schoeso.desy.ejb.facade.ops.DeliveryAraeaFacade.findByVariousParameters( de.schoeso.desy.ejb.entity.org.unit.UnitOfOrganisationDepot,boolean): javax.ejb.EJBException: javax.persistence.PersistenceException: Exception [EclipseLink-6094] (Eclipse Persistence Services – 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.QueryException Exception Description: The parameter name [mandator_id] in the…

  • Speicherinformationen über MBean ausgeben

    Früher war die einzige Möglichkeit um Systeminformationen zu erhalten, die Klasse Runtime. In JEE Versionen ab Version 6 kann über die JMX (Java Managment Extension) auf diese Informationen zugegriffen werden. Eine entsprechende Bean kann mit Hilfe von final MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); angefordert werden. Eine Ausgabe kann wie folgt realisiert werden, wobei die Werte noch…