UNIXwork

Tags

c dav unix shell linux xattr solaris links x11 java rant fun webdav sync gnome apple benchmark network ldap oracle analytics xnedit macos windows graalvm bsd curl mac apache wtf virtualbox microsoft zfs sparc tomcat rhel freebsd arm

Apache Tomcat 10.0.0 M1 veröffentlicht

25. Februar 2020

Apache bezeichnet dies als milestone release, was wohl sowas wie eine Vorabversion oder ein Release Candidate ist.

Mit Tomcat 10 wird der Sprung von JEE 8 auf Jakarta EE 9 vollzogen, womit sich die Namespaces von javax.* auf jakarta.* ändern. Alte Anwendungen laufen ohne Anpassungen nicht mehr.

Um dieses Problem anzugehen, wird aktuell auch an einem Migrationstool gearbeitet, welches JEE8 Anwendungen automatisch in Jakarta EE Anwendungen konvertiert.

Apache Tomcat Webseite

Apache Tomcat 9 veröffentlicht

25. Januar 2018

Apache Tomcat 9.0.4 wurde veröffentlicht, was auch die erste stabile Version der 9er Reihe ist.

Tomcat 9 implementiert die neueren Spezifikationen Java Servlet 4.0, JavaServer Pages 2.4, Java Unified Expression Language 3.1 und die Java API for Websocket 2.0. Des Weiteren wird jetzt auch mindestens Java 8 benötigt.

Downloads gibt es auf der Apache Tomcat Webseite.

JNDI mit Glassfish und Tomcat

02. November 2014

Möchte man, dass eine Java-Webanwendungen auf verschiedenen Applicationservern oder Servletcontainern lauffähig ist, gibt es im Bezug auf JNDI einen kleinen Fallstrick. Die JNDI-Namen für Resourcen sind nämlich nicht überall gleich. Mit folgendem Code kann man unter Glassfish auf einen vom Applicationserver zur Verfügung gestellten Connection-Pool zugreifen:

InitialContext context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("jdbc/mydb");
Connection connection = dataSource.getConnection();

Mit anderen Servern, wie z.B. Apache Tomcat, funktioniert dies jedoch nicht. Statt dem String "jdbc/mydb" müsste man dort "java:comp/env/jdbc/mydb" verwenden. Das wiederum funktioniert nicht mit Glassfish, zumindestens nicht ohne weiteres. Allerdings gibt es dafür eine Lösung.

Man verwendet folgenden Java-Code.

DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/mydb");

Dazu muss man dann noch den Standard Deployment Descriptor web.xml und die glassfish-web.xml anpassen. In die web.xml wird folgendes eingefügt:

<resource-ref>
    <res-ref-name>jdbc/mydb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

und in die glassfish-web.xml das:

<resource-ref>
    <res-ref-name>jdbc/mydb</res-ref-name>
    <jndi-name>jdbc/mydb</jndi-name>  
</resource-ref>

Danach funktioniert die Webapp sowohl mit Glassfish als auch mit Tomcat, wenn im Server die nötigen JNDI-Resourcen konfiguriert sind.