`
showtime520
  • 浏览: 87578 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

项目所容易犯的错误与发生的异常(收集中。。。。)

    博客分类:
  • JAVA
阅读更多
[list=1]
  • exception setting property value with CGLIB
  • 有可能是因为。你的字段中有个字段是数值类型的如int,long等  
       这个字段在数据库里面的直为空。所以就要报这个错误。你把你涉及倒的表中所有为数值的字段为空的设置为0看看。 
  • tomcat热部署3次以上真的会OOM。。。。
  • oracle中取别名 ,别名应使用双引号。。。。。
  • 数据库主键的建议:在使用hibernate的时候不要使用oracle中触发器来生成主键,否则持久化对象无法感知ID的变化而进行同步。对于log等日志表,主键使用UUID的生成策略,用varchar2做主键类型比较好。
  • 中文乱码大多是用get 方法提交的表单,所以可能有中文的表单一定要中post提交,post方法提交的话,浏览器会自动给中文编码再提交。
  • struts1.2中标签体内空格也是占位的。标签会把加了空格的字符串当做作用域中的key去取,这样会取不出来的。
  • java.sql.SQLException: 数据大小超出此类型的最大值: 2391。这是用varchar2(2000)来储存中文字符时(varchar2最大值是2000),如果超过2000/3=666(oracle在utf-8编码下一个中文3个字节),就会报这个错误,所以插入值的时候不要超过600. 网上说是oracle驱动的问题,但换了驱动还是不行。
  • IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.commons.fileupload.DeferredFileOutputStream
  • java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.commons.fileupload.DeferredFileOutputStream
    这个错误是使用struts的FileImg上传后,重启或关闭tomcat的时候发生的错误,找了apache的官网才有答案,原因是当tomcat重启或关闭是要把所有可以序列化的对象保存至session的作用域(??),但是defferredFileOutputStream没有实现Serializable接口,所以报错,看来可以直接无视。
    原文:

    Because when you shutdown tomcat, it tries to serial all objects within
    the session scope.  The
    class you are referring to
    'org.apache.commons.fileupload.DeferredFileOutputStream' does not
    implement 'java.io.Serializable' and therefore tomcat throws this
    exception when trying to serialize it.

    Whilst I don't know what the class
    'org.apache.catalina.session.StandardManager' does, presumably is
    performs a check to see if an object stored within the session is
    serializable before trying to
    write it disk, or it might remove non-serializable object from the
    session scope on shutdown.

  • java.sql.SQLException: ORA-00932: 不一致的数据类型: 要求 NUMBER 得到的却是 BINARY出现这个异常是因为在数据库中字段为number类型的值给赋予了null,粗心出的错误。
  • 不过建议把基本数据类型变成包装类型,这样当你没有赋值的时候会向数据库插入NULL,而不是基本类型的默认值,防止出BUG。
  • org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[jsp] - Servlet.service() for servlet jsp threw exception
  • java.net.SocketException: Connection reset by peer: socket write error
    原因:
    一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错
    或是
    客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉
    不影响业务  操作数据库的数据都是正确的 有时候这个错误也会出现在程序运行中间 而且也不影响后面的操作
  • ERROR [org.apache.catalina.session.ManagerBase] - IOException while loading persisted sessions: java.io.InvalidClassException: com.userModule.web.form.CommonForm; local class incompatible: stream classdesc serialVersionUID = 2692096418018593414, local class serialVersionUID = 9165043261724574951
  • [color=red]
    java.io.InvalidClassException: com.userModule.web.form.CommonForm; local class incompatible: stream classdesc serialVersionUID = 2692096418018593414, local class serialVersionUID = 9165043261724574951
    在tomcat下启动时抛出这样一个异常,这是由于我所有的类都没有进行显示的设置
    private static final long serialVersionUID=????; 
    

    这只是一个小问题,原因是:
    java通过一个名为UID(stream unique identifier)来版本控制,这个UID是隐式的,它通过类名,方法名等诸多因素经过计算而得,理论上是一一映射的关系,也就是唯一的。如果UID不一样的话,就无法实现反序列化了,并且将会得到InvalidClassException。

  • char型+数字变成了数字。。。。。本来是要得到一个字符串的,小细节
  • 在使用filter加载公共属性的时候,尽量在公共域中放置数字标识[/color]
  • 因为在加载公共属性的时候是要耗时间的,如果采用判断公共属性在公共域中是否有,在高并发量时会把这个公共属性加载几次
  • varchar2转clob不能直接转,要把varchar2转成long,然后把long转成clob.
  • 在oracle9i2中使用最新的ojdbc14.jar可以使用hibernate直接把clobd当String操作,但前提是不能超过string的最大长度。貌似string长度是3w多。
  • 索引'HNWT114.PK_T_114WEB_C_DYNAMIC'或这类索引的分区处于不可用状态索引失效,只能重建表来解决
  • hql语句的from不支持子查询,where支持!
  • hql语句不支持2层函数嵌套!
  • ORA-01747: 无效的用户.表.列,表.列,或列规格,程序中报这个错误是因为oracle数据库的表中用了oracle的关键字,所以在oracle设计表中不要用关键字
  • [/list]


    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics