Ich beschäftige mich - nicht nur aus meinem Job heraus - mit leichtgewichtiger Softwareentwicklung und dem Java-Build-(Lifecycle-)Management. Hier möchte ich neue Ideen und Best-Practices vorstellen.

Dienstag, 27. Januar 2009

Mein eigener Websphere-Bug

Die Umstellungsarbeiten von Websphere Application Server (WAS) Version 6 auf Version 7 gingen eigentlich ziemlich gut voran. Sogar das Clustering der Webanwendungen lief wie geschmiert. Trotzdem habe ich mich – wie bei allem IBM-Produkten – gefragt, wann und in welcher Gestalt der “Showstopper” kommt.

Gestern war es dann soweit. Der JSP-Parser (der endlich Java 5 & 6 spricht) versagt bei einer doppelten Definition eines Tag-Verzeichnisses:

SRVE0293E: [Servlet-Fehler]-[/WEB-INF/jsp/index.jsp]: com.ibm.ws.jsp.JspCoreException: /WEB-INF/jsp/index.jsp(66,63) /WEB-INF/jsp/other.jsp(5,53) JSPG0240E: Es wurde versucht, das Präfix "ringwelt" in "urn:jsptagdir:/WEB-INF/tags" zu ändern, obwohl es im aktuellen Geltungsbereich bereits mit "/WEB-INF/tags" definiert ist.

Nach einigem Suchen ließ sich das Problem wiefolgt isolieren: Die JSP index.jsp inkludiert die JSP other.jsp statisch. Beide Dateien enthalten eine identische Tagdir-Definition und nutzen den gleichen Taglib-Prefix. Sobald der Include in der index.jsp innerhalb eines JSP-Tags erfolgt, schmeißt der WAS7 die o.g. Exception.

index.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="ringwelt" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- This will work -->
<%@ include file="other.jsp" %>
<!--
This will fail due to the second declaration of
the tagdir prefix above
-->
<c:if test="${1 == 1}">
<%@ include file="other.jsp" %>
</c:if>

other.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<taglib prefix="ringwelt" tagdir="/WEB-INF/tags"%>
<ringwelt:hello />

Wie kann man so etwas nicht getestet haben? Ist mir unbegreiflich? Wir haben den Bug zur IBM gegeben. Vielleicht zeigt sich “Big Blue” ja erkenntlich und lädt mich zu irgendeiner Webspherekonferenz ein. Gerne in Übersee ;-)

2 Kommentare »

  1. Hihi, Einladung zur Webspherekonferenz?? Das hast du doch gar nicht verdient, es ist doch gar kein Bug :-))) Oder???

  2. Stimmt. Die IBM sieht es wiefolgt:

    The spec doesn’t say anything specific about this scenario…that they
    cannot do it.

    Dass statische Includes doch funktionieren, nur dass man dafür die neue JSP-Direktive nutzen muss, ist dem IBM-Support leider entfallen. Und weshalb der Code in WAS 6.1 funktioniert aber in WAS 7 nicht mehr … darauf gab es auch keine Antwort.

Hallo Besucher, schreibe einen Kommentar! »