系统描述:
系统采用struts1.0结合DAOUtils的方式, Web层页面使用struts标签,提交请求到Action, Action中使用TranslateBean.formToBean(form, bean)可将JSP页面中的数据赋值给Bean,接下来调用XXXBO的对象方法,BO中使用DAOUtils处理数据表操作,DAOUtils对JDBC作了封装. 应用服务为tomcat6.0   数据库:oracle 双机热备作用于(服务器1和服务器2),应用服务tomcat6.0部署在服务器1上,服务器1倒掉后双机热备程序会把tomcat6.0切到服务器2上,服务器操作系统用的是Red Hat Enterprise Linux Server release 5.4 
问题:
    在jsp页面输入数字也就是number类型的数据时,会出现部分数字最高位取整(不是所有数字都会发生最高位取整),例如输入14.4存到数据库里就会变为20.0 (输入1.2就会变为2.0等)既不是向上取整,也不是四舍五入,出现这种问题后重启tomcat就好了。这种问题也不是一直有,一般20几天或一个月甚至50天出来一次。时好时坏估计也不是数据库表中定义的nunber类型有问题(  输入14.4的字段是这样定义的NUMBER(8,2)  ),最近两次出问题都是双机热备切换后出现的,但之前双机热备切换的时候也不会出现。
    而且还跟踪了form和bean中的值,插入数据库前后都正确着。    而且这种问题只在服务器Linux 上出现,开发环境windows从来没有出现过,才导致不好解决
    不知道大家有遇到这种情况吗,麻烦给支支招   

解决方案 »

  1.   

    目前只能是把实体类对应的form和bean中的double类型换成String后,就好了,数据库不用改动,也不知道合理不合理。
      

  2.   

    楼主,我们也出现“高位取整”这种和你相同的情况,至今还未查出原因哦,急!现象是
    565.2--600
    490.6--500
    275.5--300
    17.23--20
    310.6--400
    46.1--50
    594.3--600我们的系统结构是Riachfaces3.3+JSF1.2+spring2.5+hibernate3.0  数据库oracle10g
    F5负载均衡不知道楼主及各位高人是怎么解决了,望赐教,也可加本人qq25354770 不甚感激
      

  3.   

    oracle肯定不会高位取整的,放心好了,
    肯定是应用程序上的转换以及操作造成的