org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.filterUrl(SessionTimeOutFilter.java:125)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.doFilter(SessionTimeOutFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:847)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:839)
at com.gbicc.xbrlcm.cert.dao.impl.CertInfoDaoImpl.queryCerInfor(CertInfoDaoImpl.java:47)
at com.gbicc.xbrlcm.cert.service.impl.CertInforServiceImpl.queryCerInfor(CertInforServiceImpl.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy15.queryCerInfor(Unknown Source)
at com.gbicc.xbrlcm.cert.web.CertInfoCtrl.queryCertDeal(CertInfoCtrl.java:253)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:472)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:409)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
... 29 more
Caused by: org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
at org.hibernate.type.SerializableType.get(SerializableType.java:39)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2046)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1371)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:388)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:856)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
... 58 more
Caused by: java.io.StreamCorruptedException: invalid stream header
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:252)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:209)
... 81 more
(CertInfo) this.getHibernateTemplate().get(CertInfo.class, certInfo.getCert_infor_id());
我在做get方法时就报错!请哪位指教一下!

解决方案 »

  1.   

    could not deserialize不能反序列化,你是不是有类没有实现序列化接口。
      

  2.   

    CertInfo.hbm.xml 字段指定type
      

  3.   

    都指定了 
    package com.gbicc.xbrlcm.cert.domain;import java.io.Serializable;
    import java.sql.Blob;
    import java.util.Date;public class CertInfo implements Serializable {
        /**
         * 申请信息
         */
        private String cert_infor_id; //主键    private String cert_code; //证书的编码    private Date cert_apply_time; //证书申请时间    private Date cert_active_beginTime; //证书生效开始时间    private Date cert_active_endTime; //证书失效时间    private Blob cert_content; //证书的内容    private String cert_apply_ref; //申请信息的ID    private Long cert_apply_seq; //申请的流水号,为执单的编号
        
        private String certType;    public String getCertType() {
            return certType;
        }    public void setCertType(String certType) {
            this.certType = certType;
        }    private CertApply certApply = new CertApply();    public CertApply getCertApply() {
            return certApply;
        }    public void setCertApply(CertApply certApply) {
            this.certApply = certApply;
        }    public String getCert_infor_id() {
            return cert_infor_id;
        }    public void setCert_infor_id(String certInforId) {
            cert_infor_id = certInforId;
        }    public String getCert_code() {
            return cert_code;
        }    public void setCert_code(String certCode) {
            cert_code = certCode;
        }    public Date getCert_apply_time() {
            return cert_apply_time;
        }    public void setCert_apply_time(Date certApplyTime) {
            cert_apply_time = certApplyTime;
        }    public Date getCert_active_beginTime() {
            return cert_active_beginTime;
        }    public void setCert_active_beginTime(Date certActiveBeginTime) {
            cert_active_beginTime = certActiveBeginTime;
        }    public Date getCert_active_endTime() {
            return cert_active_endTime;
        }    public void setCert_active_endTime(Date certActiveEndTime) {
            cert_active_endTime = certActiveEndTime;
        }    public Blob getCert_content() {
            return cert_content;
        }    public void setCert_content(Blob certContent) {
            cert_content = certContent;
        }    public String getCert_apply_ref() {
            return cert_apply_ref;
        }    public void setCert_apply_ref(String certApplyRef) {
            cert_apply_ref = certApplyRef;
        }    public Long getCert_apply_seq() {
            return cert_apply_seq;
        }    public void setCert_apply_seq(Long certApplySeq) {
            cert_apply_seq = certApplySeq;
        }}
      

  4.   

    Caused by: java.io.StreamCorruptedException: invalid stream header
    底层异常
    你的序列化ID呢?
      

  5.   

    private static final long serialVersionUID = 1111L;
      

  6.   

    package com.gbicc.xbrlcm.cert.domain;import java.io.Serializable;
    import java.sql.Blob;
    import java.util.Date;public class CertInfo implements Serializable {
        /**
         * 申请信息
         */
        private static final long serialVersionUID = 1111L;
        private String cert_infor_id; //主键    private String cert_code; //证书的编码    private Date cert_apply_time; //证书申请时间    private Date cert_active_beginTime; //证书生效开始时间    private Date cert_active_endTime; //证书失效时间    private Blob cert_content; //证书的内容    private String cert_apply_ref; //申请信息的ID    private Long cert_apply_seq; //申请的流水号,为执单的编号
        
        private String certType;    public String getCertType() {
            return certType;
        }    public void setCertType(String certType) {
            this.certType = certType;
        }    private CertApply certApply = new CertApply();    public CertApply getCertApply() {
            return certApply;
        }    public void setCertApply(CertApply certApply) {
            this.certApply = certApply;
        }    public String getCert_infor_id() {
            return cert_infor_id;
        }    public void setCert_infor_id(String certInforId) {
            cert_infor_id = certInforId;
        }    public String getCert_code() {
            return cert_code;
        }    public void setCert_code(String certCode) {
            cert_code = certCode;
        }    public Date getCert_apply_time() {
            return cert_apply_time;
        }    public void setCert_apply_time(Date certApplyTime) {
            cert_apply_time = certApplyTime;
        }    public Date getCert_active_beginTime() {
            return cert_active_beginTime;
        }    public void setCert_active_beginTime(Date certActiveBeginTime) {
            cert_active_beginTime = certActiveBeginTime;
        }    public Date getCert_active_endTime() {
            return cert_active_endTime;
        }    public void setCert_active_endTime(Date certActiveEndTime) {
            cert_active_endTime = certActiveEndTime;
        }    public Blob getCert_content() {
            return cert_content;
        }    public void setCert_content(Blob certContent) {
            cert_content = certContent;
        }    public String getCert_apply_ref() {
            return cert_apply_ref;
        }    public void setCert_apply_ref(String certApplyRef) {
            cert_apply_ref = certApplyRef;
        }    public Long getCert_apply_seq() {
            return cert_apply_seq;
        }    public void setCert_apply_seq(Long certApplySeq) {
            cert_apply_seq = certApplySeq;
        }}
      

  7.   

    配置对的话,
    难道真要整这个了?
    Caused by: java.io.StreamCorruptedException: invalid stream header
    一个可能的原因是jdk的bug
      

  8.   

    private CertApply certApply = new CertApply();
    CertApply  你这个类有没实现序列化接口啊?
      

  9.   

    private CertApply certApply = new CertApply();
    CertApply 类是什么,贴出来看看
      

  10.   

    Blob  这个字段不要放这个表吧 ,去掉,另外加个存Blob的表就OK了,CertApply 这个保存对于的blob的ID。读取和保存blob的方法不一样的
      

  11.   


    对于写错,是对应。
    spring有操作blob的方法。
      

  12.   

    http://xinzhiz.javaeye.com/blog/111731 
    这个回答应该不错。。LZ有不明白的就Google/baidu吧
      

  13.   

    是不是没有默认构造方法,加一个public CertInfo(){},所有domain类都加默认构造方法。试试行不行,另外建议使用code样式打印代码,看的眼花。
      

  14.   

    http://xinzhiz.javaeye.com/blog/111731  
     打死都进不去
      

  15.   

    Struts+Spring+Hibernate处理Lob(Blob,Clob)  在使用struts+spring+hibernate的开发中,有些时候用户会有数据库存储文件的需求,在数据库中一般会采用
    Blob字段或Clob字段来存储二进制图片、流媒体或文件。现就将在实际开发中遇到的问题及解决方法告之。一、问题需求: 1.在持久化类中字段该用什么类型?
     2.在Struts中文件对应的数据类型是什么?
     3.在Hibernate中字段对应的类型是什么?
     4.如何在Spring中处理这些文件?二、解决方法: 1.在数据库中这些文件最终是以字节的形式存储二进制对象,所以在持久化类中将相应的属性定义为byte[]类型。 2.在Struts中可以使用<html:file property="" />标签来上传文件,所以与之对应的ActionForm的属性类型为:
    FormFile(org.apache.struts.upload.FormFile)类型,即使是使用了动态Form同理也是使用该类型.
    提示:同时要将form标签修改为<html:form action="/Action.do" method="post" enctype="multipart/form-data">
    以支持文件上传后取得上传数据。在给持久对象赋值时只需调用(FormFile) form.get("property")).getFileData();
    方法即可返回byte[]。 3.在Hibernate中文件列对应的类型可以是org.springframework.orm.hibernate3.support.BlobByteArrayType,
    org.springframework.orm.hibernate3.support.ClobStringType、clob、blob、binary。什么时候用BlobBYteArrayType
    什么时候用ClobStringType?一般如果要处理的对象是数据库字段类型是blob时(主要是图片,二进制对象等),
    映射文件设置为:org.springframework.orm.hibernate3.support.BlobByteArrayType 数据库字段是clob(大文本对象)
    类型时,要将java的属性的类型定为String,映射文件设置为: org.springframework.orm.hibernate3.support.ClobStringType。 4.如果在spring上要使用Struts中自带的上传功能必须在spring的配置文件中加以声明.否者将会出现?
    簀ava.lang.IllegalStateException: No LobHandler found for configuration - lobHandler property 
    must be set on LocalSessionFactoryBean异常。配置如下: (1).声明一个处理句柄:
      <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
     (2).在sessionFactory中注入lobHandler:
      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
              <property name="lobHandler" ref="lobHandler"/>
      </bean> 提示: 指定lobHandler时,对于MySQL、DB2、MS SQL Server、Oracle 10g,使用DefaultLobHandler即可,而Oracle 9i,
    则可以使用OracleLobHandler。因为Oracle9i处理lob的方式和不太一样,所以这里要用spring提供的SimpleNativeJdbcExtractor.处理Oracle9i lob类型的特殊声明:<bean id="nativeJdbcExtractor" lazy-init="true"  class="org.springframework.jdbc.support.nativejdbc.
    SimpleNativeJdbcExtractor"/><bean id="lobHandler" lazy-init="true"   class="org.springframework.jdbc.support.lob.OracleLobHandler">
            <property name="nativeJdbcExtractor">
                <ref bean="nativeJdbcExtractor"/>
            </property>
    </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       
     <!-- 为处理Blob类型字段的句柄声明 -->
     <property name="lobHandler">
      <ref local="lobHandler" />
     </property>
    </bean>同时还应该使用对应的JDBC驱动。Clob字段定义:<property name="属性名" column="列名" type="org.springframework.orm.hibernate.support.ClobStringType"
     length="1048"/>这里的length是指字节,最大可以到2G.该字段在java对象中声明为String类型。     如果使用的是mysql数据库其默认的上传文件大小只有1047552字节:如果上传的文件大于1047552字节则会出现异常
    org.springframework.jdbc.UncategorizedSQLException: You can change this value on the server by setting 
    the max_allowed_packet' variable.根据提示可以修改mysql数据库的max_allowed_packet属性大小。
    打开my.ini文件中找到# SERVER SECTION后在port=3306下面加上max_allowed_packet=?M 修改完后重启mysql服务即可成功上传。
    ===============罪过罪过,copy form http://xinzhiz.javaeye.com/blog/111731