Ich habe eine Weblogic 10.3.3 installieren und habe Probleme mit rekursiven JSP-Tags. Im Internet habe ich einige andere Leute gefunden, die dieselben Probleme haben (here und here), aber keine Lösungen. Einige Leute behaupten, dass es in Weblogic 12 behoben ist oder in 9 gearbeitet hat, aber das kann ich nicht bestätigen.Weblogic und rekursive JSP-Tags
Die Anwendung wird mit Spring/Spring Roo/Apache Tiles/Jspx erstellt. Die Modellklasse, die angezeigt wird, ist so etwas wie:
public class Programme {
private String name;
private final List<Programme> programmes = new ArrayList<Programme>();
...(getter/setter)...
}
Dann habe ich ein Tagx wie folgt aus:
<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:coursedataimport="urn:jsptagdir:/WEB-INF/tags/coursedataimport" version="2.0">
<jsp:output omit-xml-declaration="yes" />
<jsp:directive.attribute name="programme" type="package.Programme" required="true" rtexprvalue="true" />
<c:out value="${programme.name}" />
<ul>
<c:forEach var="p" items="${programme.programmes}">
<li><coursedataimport:programme programme="${p}" /></li>
</c:forEach>
</ul>
</jsp:root>
Dies funktioniert nicht. Beim Anfordern der Seite scheint der Anwendungscontainer abzustürzen (wahrscheinlich ein Stapelüberlauf, aber ich kann ihn in den Protokollen nicht finden) und der Anwendungskontext wird neu geladen. In Tomcat 7 funktioniert es gut.
Die dargestellte Ausnahme so etwas wie das ist, aber ich bin nicht sicher, ob es in engem Zusammenhang steht (da es sich um die Fehlerseite spricht):
[ServletContext @ 483.389.576 [App: app-Ohr-0-Modul : appmodule Pfad:/CONTEXTROOT spec-version: 2.5]] Problem beim Auslösen der Fehlerseite. org.springframework.web.util.NestedServletException: Anforderungsverarbeitung fehlgeschlagen; Die verschachtelte Ausnahme ist java.lang.ClassCastException: org.apache.tiles.ArrayStack um org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:894) um org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:779) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:707) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:821) bei ...
Hat jemand diese Probleme schon einmal erlebt, oder kennt jemand eine Lösung? Irgendwelche Tipps, wie man dies debuggt, oder wie man das rekursive Tag umgehen kann (da ich einen Baum anzeigen möchte, ist es eine kleine Herausforderung). Danke im Voraus.
Versuchen Sie, das Programm-Tag rekursiv aufzurufen? Ich habe ein ähnliches Problem. Beim rekursiven Aufrufen einer Tag-Datei funktioniert es in Tomcat 6, aber nicht in Weblogic 11. –
Ja, das ist das Problem. Tomcat funktioniert gut, aber Weblogic ist ein Pita. Wir haben dafür keine Lösung gefunden, abgesehen vom Umschreiben des Codes, so dass kein rekursives Tag verwendet wird. – MikeN