WAS:修改jsp编译器用JDK5.0

  问题现象:

   今天有现场反映,访问应用的个别页面报错,报错内容如下:

WAS:修改jsp编译器用JDK5.0_第1张图片

 

于是先查看其他现场,都是好的;根据报错信息,提示的意思是jsp解析不了。

结合上面2个情况,排除代码问题,应该是现场WAS环境问题。(现场WAS是6.1)

另外有个重要信息:大部分jsp页面是可以正常编译访问的,就是个别jsp编译有问题;

于是排查该jsp,发现里面用了jdk5.0的新特性,问题明了了,

 

问题原因:

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

 

2.Was6.1开始支持jdk5  其中jdkSourceLevel 是新引入的支持 JDK 5 的JSP 引擎参数。

该参数的默认值为 13(14-jdk1.4   15-jdk1.5)。该参数需要重新生成 Java 源代码。

 

3.在WAS6.1版本中使用JDK5.0,但是如果在JSP中嵌入的代码包含JDK5.0的新特性,编译的时候会出错。所以应用程序部署Was完成之后需要设置相应的JSP引擎配置参数,具体如下:

“jdkSourceLevel” 是在 WasV6.1 中引入的支持 JDK 5 新特性的 JSP 引擎参数。此参数的缺省值为 13。

以下是 “jdkSourceLevel”的可选 参数值:
       13(缺省值) - 此值将禁用 JDK 1.4 和 JDK 5.0 的所有新的语言功能部件。 
       14 - 此值将启用断言工具并将禁用 JDK 5.0 的所有新的语言功能部件。 
       15 - 此值将启用断言工具和 JDK 5.0 的所有新的语言功能部件。

 

解决办法:

到服务器上找到下面的两个文件: 
<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_××××××" name="jdkSourceLevel" value="15"/> 

例子:

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


保存后重新启动应用即可,也请同时删除 jsp 已经编译过的 class 文件: 
<WAS-HOME>/profiles/AppSrv01/temp/<nodename>/<appname>/<appname.war>/*.class 

 

 

内容参考了:

http://wing123.iteye.com/blog/376857

http://www.cnblogs.com/zhangnanblog/archive/2012/2/3.html

 

你可能感兴趣的:(jsp)