小编Jav*_*011的帖子

Tomcat 5.5和6.0中的数据损坏问题运行功能

我一直试图找出这个bug几天.我已将问题缩小到测试用例,如下所示.同样,这是导致错误发生的测试用例.该功能(此时)不是实用的功能,而只是试图找出错误.

服务器正在运行: - Tomcat 6 - OpenJDK 1.6.0_17 - CentOS 5.5

我有一个简单的类文件,其中包含以下方法静态方法和静态变量声明:

public static java.text.SimpleDateFormat displayDateSDF1 = new java.text.SimpleDateFormat("MM/dd/yyyy");

public static java.util.Date getSubDateMini(String inputDate)
{
    java.util.Date testObj = null;
    try
    {
        testObj = displayDateSDF1.parse("01/01/2000") ;
    }
    catch (Exception e)
    {
    }
    return testObj;
}
Run Code Online (Sandbox Code Playgroud)

在Tomcat中进行测试:

当我运行这个方法时,我希望每次都得到相同的结果,对吧?但是,如果我从JSP调用此方法,我会获得Date对象的预期结果,其值为1/1/2000,大约为99.9%.但是,有时我会使用看似随机的日期值传回一个意外的数据对象.

为了测试这个,我创建了一个JSP,其中包含以下代码段:

for (int i=0; i<200000;i++)
{
    java.util.Date testObjLib = TestDate.getSubDateMini("") ;
    if (testObjLib!=null&&!testObjLib.toString().equalsIgnoreCase("Sat Jan 01 00:00:00 PST 2000"))
    {
            out.print("<br>"+testObjLib+"");
    }
}
Run Code Online (Sandbox Code Playgroud)

出现的一些日期如下:

1月1日00:00:00太平洋标准时间1

星期五01月01日00:00:00 PDT 2166

在200,000次运行中,我得到大约50个错误日期,错误率为~0.025%,但同样是随机的.我用10次迭代运行这个循环并收到错误.有时它以200,000运行循环并且所有日期看起来都很好.

用Java测试:

通过CentOS中的控制台/终端应用程序使用相同的循环运行此循环,我还没有看到此错误发生.我将循环增加到10,000,000并且到目前为止还没有错误的结果.


我可以理解内存不足或一些抛出的错误(这将导致空值)但不会损坏/不一致的数据.我从头开始用Tomcat 6构建了一个新服务器,并尝试了Tomcat 5.5,两者都有相同的结果.我没有尝试过Tomcat 7. …

java linux tomcat centos

2
推荐指数
1
解决办法
370
查看次数

标签 统计

centos ×1

java ×1

linux ×1

tomcat ×1