让jsp页面支持jdk5

这次项目生产环境用的是WAS6.1,jdk是ibmjdk5,因为看到jdk已经从1.4升级到了1.5,于是我们开始基于jdk5来开发页面还有后台代码。

在部署到WAS上的时候碰到了一个奇怪问题,后台java代码基于jdk1.5特性写的地方都没问题,但是jsp页面就出现了不能支持jdk5特性的情况,比如一个Integer不能直接赋值给一个int变量等等。。。如果要全部改写页面基于jdk1.4的语法来写,那返工会很多。既然WAS的jdk版本已经上升到了5.0,那么有没有什么办法能让jsp也能支持jdk5呢?

 

通过下面的办法实战了一把, 还是成功了:

 

----------------------------------------------------------------------------------------------------------------------------------

环境:(产品,平台,机型,软件版本,等) 

产品: WebSphere Application Server 
平台: 跨平台 
版本: 6.1.x 

问题描述: 
缺省情况下,JSP 编译器用 1.3 的规范来编译 JSP 文件,如果您在 WAS V6.1 里用了带 JDK 1.5 的特性的 JSP,编译会失败 

解答: 
为了确保您的 JSP 被正确编译,请在打包时的 JSP 属性里添加一个属性:jdkSourceLevel,值为:15,这是推荐的方法,如果您不能重新打包后重新发布应用,请按照下面的步骤修改相关文件: 
找到下面的两个文件: 
<WAS-HOME>/profiles/AppSrv01/config/cells/<cellname>/applications/<appname>/deployments/<appname.war>/WEB-INF/ibm-web-ext.xmi 
<WAS-HOME>/profiles/AppSrv01/installedApps/<nodename>/<appname>/<appname.war>/WEB-INF/ibm-web-ext.xmi 

在最后面的 </webappext:WebAppExtension> 前添加下面一行: 

<jspAttributes xmi:id="JSPAttribute_113" name="jdkSourceLevel" value="15"/> 

到这里,只要重启一下app就能看到效果了。



如果要看jsp编译过的 class 文件,可以在这里找到: 

<WAS-HOME>/profiles/AppSrv01/temp/<nodename>/<appname>/<appname.war>/*.class 

如果用 JspBatchCompiler 命令可以带下面的参数: 

JspBatchCompiler -enterpriseapp.name <App_Name> -jdkSourceLevel 15 -keepgenerated true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章