aix+was5+jdk1.3.1导入excel问题

前几天遇到一个问题,页面导入excel出错:

[2012-02-09 14:13:04] runqianReportLogger : [DEBUG] -Illegal block count; minimum count is 1, got 0 instead
java.io.IOException: Illegal block count; minimum count is 1, got 0 instead
at org.apache.poi2.poifs.storage.BlockAllocationTableReader.<init>(BlockAllocationTableReader.java(Compiled Code))
at org.apache.poi2.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java(Compiled Code))
at org.apache.poi2.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java(Inlined Compiled Code))
at org.apache.poi2.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java(Inlined Compiled Code))
at com.runqian.report4.ide.ExcelImporter._$1(Unknown Source(Compiled Code))
at com.runqian.report4.ide.ExcelImporter.<init>(Unknown Source(Inlined Compiled Code))
at com.runqian.report4.input.UploadExcelServlet.service(Unknown Source(Compiled Code))
at com.runqian.report4.view.ReportServlet.service(Unknown Source(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))

软件环境是aix5.2+websphere5+ibm jdk1.3.1。

润乾报表经过十多年的发展,已经有成千上万两个成功案例了。程序肯定是没问题的,久经考验过的。看错误是poi2出错,让研发看了,经过多次测试,判定是jdk1.3.1jit优化poi2包下某些方法时出现的错误。

解决方法:

一. jit跳过poi2包下某些方法的优化

操作步骤:websphere控制台

websphere5.1

Servers > Application Servers > server_name > Process Definition > Environment Entries >

websphere6.0

Application servers > server_name > Expand Java and Process Management > Process Definition > Custom Properties


新建一个属性JITC_COMPILEOPT,值为“COMPILING:NALL{org/apache/poi2/*}{*}”意思是让jit跳过对org.apache.poi2下所有类所有方法的优化。

添加完后,重启server,就可以了。

此方法操作有点复杂,但是不会影响性能。

二. 禁用jit

进入WebSphere的管理控制台,打开”应用服务器”>server1>“进程定义”进入”Java虚拟机”,选中”禁用 JIT“,然后重新启动websphere

此方法操作相对上一个方法简单些,但是会影响web服务器的性能。

三.升级jdk

升级jdk到1.4或者以上版本,此方法操作性不是很好,但是从根本上解决了这个问题。

热门文章