websphere 7 (und Spring Roo) nicht kompatibel mit javax.el.ELException
Ich habe eine Anwendung, wo das frontend basiert auf dem Spring Roo 1.1.2 jspx-Dateien.
Jeder denken funktioniert in Tomcat 6, aber wenn ich das bereitstellen der Anwendung in einem Websphere 7 (class loader: übergeordnete zuletzt), dann bekomme ich eine exception:
java.lang.Classcastexception-Fehler: java.lang.NullPointerException unvereinbar mit javax.el.ELException
[13.04.11 09:53:55:493 UTC] 00000026 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet /WEB-INF/layouts/default.jspx in application cyber. Exception created : com.ibm.websphere.servlet.error.ServletErrorReport: java.lang.ClassCastException: java.lang.NullPointerException incompatible with javax.el.ELException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:693)
at com.ibm._jsp._default_5F_jspx._jspService(_default_5F_jspx.java:123)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1655)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1595)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:895)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:932)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:500)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:121)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:239)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:341)
at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
...
Caused by: java.lang.ClassCastException: java.lang.NullPointerException incompatible with javax.el.ELException
at org.apache.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:139)
at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:151)
at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:194)
at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:67)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:773)
at com.ibm.ws.jsp.tagfile.webinf.util._load_2D_scripts.doTag(_load_2D_scripts.java:74)
at com.ibm._jsp._default_5F_jspx._jspx_meth_util_load$1scripts_0(_default_5F_jspx.java:140)
at com.ibm._jsp._default_5F_jspx._jspService(_default_5F_jspx.java:94)
... 88 more
Die Anwendung eine Flex/BlazeDS-Teil, das funktioniert auch. Aber es gibt auch diese JSP(x) Teil. Der Feder-Controller arbeiten, aber , es ist etwas falsch mit der JSPXs, und ich habe keine Ahnung, wo Sie beginnen, wenn ich verstehe, ist die Spezifikation Recht, als WAS7 bietet JSP 2.1, das ist genau das was ich brauche.
Den relevanten Teil des POM für den KRIEG ist:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
Kann jemand mir einen Tipp geben?
Dieser maven dependency tree:
[INFO] +- cyber:cyber-core:jar:4.0.0.0-D1-SNAPSHOT:compile
[INFO] | +- javax.validation:com.springsource.javax.validation:jar:1.0.0.GA:compile
[INFO] | +- javax.transaction:com.springsource.javax.transaction:jar:1.1.0:compile
[INFO] | +- org.apache.poi:poi:jar:3.6:compile
[INFO] | +- net.sf.jxls:jxls-core:jar:0.9.9:compile
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.8.2:compile
[INFO] | | \- commons-jexl:commons-jexl:jar:1.1:compile
[INFO] | | \- junit:junit:jar:3.8.1:compile
[INFO] | +- net.sf.jxls:jxls-reader:jar:0.9.9:compile
[INFO] | +- org.apache.commons:com.springsource.org.apache.commons.dbcp:jar:1.2.2.osgi:compile
[INFO] | | \- org.apache.commons:com.springsource.org.apache.commons.pool:jar:1.3.0:compile
[INFO] | +- commons-io:commons-io:jar:1.4:compile
[INFO] | +- org.apache.commons:com.springsource.org.apache.commons.collections:jar:3.2.1:compile
[INFO] | +- commons-lang:commons-lang:jar:2.4:compile
[INFO] | +- commons-math:commons-math:jar:1.2:compile
[INFO] | +- jdom:jdom:jar:1.0:compile
[INFO] +- org.springframework:org.springframework.core:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.beans:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:org.springframework.asm:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.context:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:org.springframework.expression:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.web:jar:3.0.5.RELEASE:compile
[INFO] | \- org.aopalliance:com.springsource.org.aopalliance:jar:1.0.0:compile
[INFO] +- org.springframework:org.springframework.web.servlet:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.aop:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.aspects:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.orm:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:org.springframework.jdbc:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:org.springframework.transaction:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:org.springframework.context.support:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-beans:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-context:jar:3.0.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-aop:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-context-support:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-core:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-expression:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:spring-web:jar:3.0.5.RELEASE:compile
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework.webflow:spring-js-resources:jar:2.2.1.RELEASE:compile
[INFO] +- org.springframework.security:org.springframework.security.core:jar:3.0.3.RELEASE:compile
[INFO] | \- org.apache.commons:com.springsource.org.apache.commons.logging:jar:1.1.1:compile
[INFO] +- org.springframework.security:org.springframework.security.web:jar:3.0.3.RELEASE:compile
[INFO] +- org.springframework.security:org.springframework.security.config:jar:3.0.3.RELEASE:compile
[INFO] +- org.apache.tiles:tiles-core:jar:2.2.1:compile
[INFO] | +- org.apache.tiles:tiles-api:jar:2.2.1:compile
[INFO] | +- commons-digester:commons-digester:jar:2.0:compile
[INFO] | \- org.slf4j:jcl-over-slf4j:jar:1.5.10:compile
[INFO] +- org.apache.tiles:tiles-jsp:jar:2.2.1:compile
[INFO] | +- org.apache.tiles:tiles-servlet:jar:2.2.1:compile
[INFO] | \- org.apache.tiles:tiles-template:jar:2.2.1:compile
[INFO] +- org.tuckey:urlrewritefilter:jar:3.1.0:compile
[INFO] +- org.springframework:spring-oxm:jar:3.0.5.RELEASE:compile
[INFO] +- javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0:compile
[INFO] | \- org.apache.taglibs:com.springsource.org.apache.taglibs.standard:jar:1.1.2:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.1:provided
[INFO] +- org.aspectj:aspectjweaver:jar:1.6.9:compile
[INFO] +- org.aspectj:aspectjrt:jar:1.6.9:compile
- Vielleicht die Ausgabe von
mvn dependency:tree
werden die Dinge klarer. Die EL-jars kann das problem sein. - Morales: meinst du, ich sollte es veröffentlichen, oder ist es ein Hinweis für mich um die Suche zu starten?
- Beide, denke ich. Einen vollwertigen application server wie websphere, hat eine Tonne von software gebündelt. Ich denke, dass neuere JSPs abhängen EL, so dass es vielleicht ein
<scope>provided</scope>
fehlt in der POM. - Morales: ich habe geschrieben auf dem Baum, aber ich habe nicht gefunden, etwas seltsam.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die 4 Schritte zu einer Roo generiert JSPX läuft auf Websphere 7
oder wie verbringe ich meine letzten zwei Tage
Das problem ist, dass die Roo (1.1.2) generiert JSPX-Dateien sind nicht kompatibel mit IBM Webshpere. Es ist also nicht ein problem der libaries.
Um die Roo-Vorlagen ausführen, die Sie brauchen, um dies zu tun:
Das erste problem (das bewirkt, dass die
java.lang.ClassCastException: java.lang.NullPointerException incompatible with javax.el.ELException
Ausnahme ist diese Zeile<util:load-scripts />
im WEB-INF/layout/Standard.jspx ich habe absolut keine Ahnung warum, weil alle anderen tagx Arbeit (ich verbringe meine ganze Abend). Die einfachste arbeiten, um zu "zählen", dass der entsprechende Inhalt von /WEB-INF/tags/util/load-scripts.tagx direkt von der hand in Verzug ist.jspx. (Sie können dann löschen Sie die load-scripts.tagx)Einer neuen Validierung Fehler auftreten: dies ist da IBM Nähte, Probleme zu haben, zu analysieren jstl-Funktionen in
'
. Zum Beispiel:${fn:toLowerCase(userLocale)}
. Und das ist genau eine der Zeilen kopiert ausload-scripts.tagx
zudefault.jspx
in Schritt 1. Mein workarround ist: zu ersetzen:durch:
Du wirst jetzt etwas sehen, aber ich Sie sehen an der Ausgabe, die Sie sehen werden, hat IBM Websphere 7 nicht entfernen Sie die namespace Definitionen bilden divs. Aber in der Vorlage haben Sie eine Menge von dieser
<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0">
Also, was Sie tun müssen ist, extrahieren Sie alle von Ihnen in<jsp:root
Elemente (In alle jspx-Dateien). So, dass die Dateien wie folgt Aussehen:Ich bin mir nicht 100% sicher, ob dieser Schritt nötig ist, aber Sie müssen den nächsten.
Nun funktioniert alles, außer Java-Scripts. Das ist, weil IBM Websphere 7, Normalisieren die JSPX-Ausgang. So, dass die Zeilen so:
geworden
<script src="${spring_dojo_url}" type="text/javascript" />
leider IE und Firefox (3) ignorieren Sie diese Skript-tags. Die Problemumgehung ist, um eine<jsp:text> </jsp:text>
in der script-Teil von alle (3) entsprechenden script-tags in Schritt 1 kopiert.Zumindest Ihren Standard.jspx wie folgt Aussehen:
Außerdem müssen Sie die Verwendung von js Kommentare
//
um sicherzustellen panels arbeiten mit Websphere7 richtig, sonst werden Sie nicht sehen, Falt-Tafeln.Konvertieren unter Datei die letzten Zeilen wie folgt Aussehen: (möglicherweise müssen Sie Bearbeiten Sie die jsp-Dateien unter Verwendung dieser Anwendung, als auch um zu vermeiden, die Ausführung von Cache/compiled version)
Auch Websphere 7 keine integrierte Unterstützung für png-Dateien und Sie werden nicht gerendert, es sei denn, Sie konvertieren Sie jpg und Bearbeiten Sie die tags zu verwenden jpg anstelle von png-Dateien, oder Sie können installieren Sie das addon für die png-Unterstützung Websphere 7
BEARBEITEN:
Hinzufügen von unten web.xml lösen kann das problem auch
png-Dateien sind standardmäßig nicht unterstützt, die in WebSphere 7 links zeigt, dass Sie müssen nur fügen Sie einen neuen MIME-Typ, und es funktionierte für mich.
http://pic.dhe.ibm.com/infocenter/mpadoc/v7r0m0/index.jsp?topic=%2Fcom.ibm.websphere.wemp.doc%2Fconfiguring%2Fconfiguringwastoacceptmimetypes.html
Können Sie konfigurieren Sie WebSphere Application Server für die Unterstützung des PNG MIME-Typ.
Wenn Sie mit WebSphere Application Server, führen Sie die folgenden Schritte zum konfigurieren der WebSphere Application Server für die Unterstützung des PNG MIME-Typ.
Verfahren
1.Melden Sie sich bei der WebSphere Application Server Integrated Solutions Console.
2.Erweitern Umgebungen > Virtual Hosts.
3.Klicken Sie auf default_host.
4.Klicken Sie auf Zusätzliche Eigenschaften > MIME-Typen.
5.Klicken Sie Auf Neu.
6.Geben Sie eine Bild - /png-als Wert für die MIME-Type-Feld.
7.Geben Sie png als Wert für das Feld Extension.
8.Klicken Sie auf OK zum speichern der neuen MIME-Typ.
9.Speichern Sie die änderungen an der Konfiguration.