websphere各种版本的JIT问题
websphere各种版本的JIT问题
各种版本测试结论
通过对websphere6.1.0.0 , websphere6.0.0.1以及websphere 5.1.0.0 进行windows XP和Red Hat linux测试,websphere6.1.0.0 没有出现jit的错误。而websphere6.0.0.1以及websphere 5.1.0.0均出现jit错误,并且通过“二”中的解决办法都可以解决。所以,现在有两种解决方式:第一种升级wesphere版本到 websphere6.1.0.0以上版本,第二种就是上述“二”中的解决方法。
一.问题描述
在websphere中使用润乾报,多次访问同一张报表或连续多次点击翻页有时会出现空指针的错误例如:
[2007-11-08 10:15:57] runqianReportLogger : [ERROR] – java.lang.NullPointerException
[2007-11-08 10:15:57] runqianReportLogger : [DEBUG] – 开始生成HTML……
[2007-11-08 10:15:57] runqianReportLogger : [ERROR] – error:
java.lang.NullPointerException
at com.runqian.report4.view.html.HtmlCell.getStyle(HtmlCell.java(Compiled Code))
at com.runqian.report4.view.html.HtmlReport.generateHtml(HtmlReport.java(Compiled Code))
at com.runqian.report4.view.html.HtmlReport.generateHtml(HtmlReport.java:200)
at com.runqian.report4.tag.HtmlTag.doStartTag(Unknown Source:730)
at com.ibm._jsp._002._jspx_meth_report_html_0(_002.java:110)
二.解决办法
Windows 下的Websphere
1. 禁用webspeere的JIT进入WebSphere的管理控制台,打开“应用服务器”>“server1”>“进程定义”.进入“Java虚拟机”,
选中“禁用 JIT”,然后重新启动websphere。此方法简单,但禁用JIT后性能比较差,对于一些对性能要求比较高的不适用。
2. 设置JITC_COMPILEOPT选项跳过JIT与润乾有冲突的方法
进入was安装目录 \IBM\WebSphere\AppServer\bin\setupCmdLine.bat 把
SET JITC_COMPILEOPT=COMPILING;SKIP{com/runqian/report4/view/html/HtmlCell}{getStyle}
添加到setupCmdLine.bat重启websphere即可。
非windows系统中设置JITC_COMPILEOPT选项时需注意的问题
1. 在was安装目录 \IBM\WebSphere\AppServer\bin\setupCmdLine.sh中设置
2. 设置时不用加set;且COMPILING后一定要用冒号,不能用分号。
JITC_COMPILEOPT=COMPILING:SKIP{com/runqian/report4/view/html/HtmlCell}{getStyle}
三.根本原因
“一次编写,到处运行”(WORA)的原则只有在将纯 Java的字节码从一个平台的某个特定版本的 Java 虚拟机(JVM)移植到另外一个不同平台上完全相同版本的 JVM 上时才适用。然而,有时这种迁移过程并不是无缝的。可以对这个迁移过程产生影响的一个因素是不同供应商的优化技术的内部实现之间存在差异。例如:在将一个 Java 程序从使用 Sun JDK 的平台迁移到使用 IBM JDK 的平台上时,JVM使用的优化技术就会有差异,这些差异可能会对程序产生影响。