websphere 7(和Spring Roo)与javax.el.E​​LException不兼容

我有一个应用程序,其前端基于Spring Roo 1.1.2 jspx文件。

每个思考在Tomcat 6中都可以正常工作,但是如果我在Websphere 7(类加载器:parent last)中部署相同的应用程序,那么我会得到一个exception:

java.lang.ClassCastException:java.lang.NullPointerException与javax.el.E​​LException不兼容

[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 

该应用程序有一个Flex / BlazeDS部分,工作正常。 但是也有这个JSP(x)部分。 Spring控制器有效,但JSPX有问题,我不知道从哪里开始 ,当我理解规范正确时,比WAS7提供JSP 2.1,这正是我需要的。

战争POM的相关部分是:

  javax.servlet com.springsource.javax.servlet.jsp.jstl 1.2.0   javax.servlet servlet-api 2.5 provided   javax.servlet.jsp jsp-api 2.1 provided  

任何人都可以给我一个暗示吗?

这是maven依赖树:

 [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 

在Websphere 7上运行Roo生成的JSPX的4个步骤

或者我过去两天如何度过


问题是Roo(1.1.2)生成的JSPX文件与IBM Webshpere不兼容。 所以这不是图书馆的问题。

要运行Roo模板,您需要执行以下操作:

  • 第一个问题(导致java.lang.ClassCastException: java.lang.NullPointerException incompatible with javax.el.ELExceptionexception是这行在WEB-INF / layout / default.jspx我有绝对的不知道为什么,因为所有其他tagx工作( 我整个晚上都在工作)。最简单的工作是在默认情况下直接“包含”/WEB-INF/tags/util/load-scripts.tagx的相关内容。 jspx。(然后你可以删除load-scripts.tagx)

  • 将出现一个新的validation错误:这是因为IBM选择解决' jstl函数问题。 例如: ${fn:toLowerCase(userLocale)} 。 这是在步骤1中从load-scripts.tagx复制到default.jspx之一。我的workarround是:替换:

      

通过:

    
  • 现在你会看到一些东西,但是你看一下输出,你会看到,IBM Websphere 7并没有删除命名空间定义表格div。 但是在模板中你会有很多这个

    那么你呢需要做的是将所有这些提取到元素(在所有jspx文件中)。 这样文件看起来像这样:

      
    ...

    如果需要这一步,我不是100%确定,但你需要下一步。

  • 现在一切正常,除了Java Scripts。 那是因为IBM Websphere 7,规范化JSPX输出。 这样的线条:

      

    成为遗憾的是IE和Firefox(3)忽略了这个脚本标签。 解决方法是将 放入所有(3)相关脚本标记的脚本部分,并在步骤1中复制。

        

至少你的default.jspx看起来像这样:

                             <spring:message code="welcome_h3" arguments="${app_name}"></spring:message>   

此外,您需要使用js注释//以确保面板正确使用Websphere7,否则您将看不到折叠面板。

转换下面的文件最后一行如下所示:(您可能需要使用此fiel编辑jsp文件以避免执行缓存/编译版本)

 load-scripts.tagx     

此外,Websphere 7没有内置支持png文件,除非你将它们转换为jpg并编辑标签以使用jpg而不是png文件,否则它们不会被渲染,或者你可以为psp文件7安装png支持的插件

编辑:下面添加到web.xml也可以解决问题

  png image/png  

WebSphere 7中默认不支持png文件; 此链接显示您只需添加新的MIME类型,它对我有用。 http://pic.dhe.ibm.com/infocenter/mpadoc/v7r0m0/index.jsp?topic=%2Fcom.ibm.websphere.wemp.doc%2Fconfiguring%2Fconfiguringwastoacceptmimetypes.html

您可以配置WebSphere Application Server以支持PNG MIME类型。

如果您使用的是WebSphere Application Server,请执行以下步骤以配置WebSphere Application Server以支持PNG MIME类型。

程序

1.登录WebSphere®ApplicationServer集成解决方案控制台。

2.Expand Environments>虚拟主机。

3.单击default_host。

4.单击“其他属性”>“MIME类型”。

5.单击“新建”。

6.输入image / png作为MIME Type字段的值。

7.输入png作为Extension字段的值。

8.单击“确定”以保存新的MIME类型。

9.保存配置更改。