org.apache.openjpa.persistence.PersistenceException:无效的流标头

时间:2012-06-04 12:25:25

标签: openjpa

您好我正在使用OpenJPA ver 2.2.0。我有两个项目,其中我有中间和数据层代码的代码。从这个项目我创建一个jar文件,我将其添加到Web项目中。在中间层项目中,我在创建jar之前对代码进行构建时间增强。

当我将jar添加到我的Web应用程序并执行它时,我正在

<openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: invalid stream header: 31303031
FailedObject: SELECT * FROM lbs.company_user comUs WHERE comUs.user_id = ? [java.lang.String]
at org.apache.openjpa.util.Serialization.deserialize(Serialization.java:88)
at org.apache.openjpa.jdbc.sql.DBDictionary.getBlobObject(DBDictionary.java:651)
at org.apache.openjpa.jdbc.sql.MySQLDictionary.getBlobObject(MySQLDictionary.java:346)
at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:402)
at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:696)
at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:222)
at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:187)
at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:928)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1094)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1038)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:409)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:304)
at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1036)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:994)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:916)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1012)
at org.apache.openjpa.jdbc.kernel.GenericResultObjectProvider.getResultObject(GenericResultObjectProvider.java:93)
at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
at org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:330)
at test.geofence.dal.impl.UserDAOImpl.findByKey(UserDAOImpl.java:58)
at test.geofence.servlets.Authentication.login(Authentication.java:199)
at test.geofence.servlets.Authentication.processRequest(Authentication.java:112)
at test.geofence.servlets.Authentication.doGet(Authentication.java:285)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.StreamCorruptedException: invalid stream header: 31303031
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at org.apache.openjpa.util.Serialization$ClassResolvingObjectInputStream.<init>(Serialization.java:127)
at org.apache.openjpa.util.Serialization$PersistentObjectInputStream.<init>(Serialization.java:161)
at org.apache.openjpa.util.Serialization.deserialize(Serialization.java:86)
... 45 more

有人可以告诉我为什么我会收到此错误和可能的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我认为,发生此错误是因为ObjectInputStream尝试打开已经读取的流。

我建议你查看MySQL中的'max_packet_size'属性。 (请参阅:http://dev.mysql.com/doc/refman//5.5/en/packet-too-large.html)数据包大小必须大于从“company_user”表中检索的最大BLOB字段。