Hi
I am trying to upgrade our application from OJB 0.97 to OJB 1.0.3.
When I try to read objects with database column type LONG in oracle I
get
the exception "java.sql.SQLException: Stream has already been closed".
This happens only when this abject is retrieved as reference from
other objects. If the LONG values are retrieved in ojbConcreteClass, it
works fine.
Please help me to find out what's causing this exception.
Here is the stack trace of the exception.
rethrown as org.apache.ojb.broker.PersistenceBrokerException: Error
reading class type: com.wbbs.forms.MortgageApplicationForm from result
set, current read field was questions: Stream has already been closed
at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readValuesFrom(Ro
wReaderDefaultImpl.java:231)
at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectArrayFr
om(RowReaderDefaultImpl.java:199)
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt
erator.java:450)
at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:275)
at
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Ba
sePrefetcher.java:107)
at
org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Qu
eryReferenceBroker.java:347)
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Que
ryReferenceBroker.java:169)
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Que
ryReferenceBroker.java:251)
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Que
ryReferenceBroker.java:271)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1367)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:338)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:338)
at
com.wbbs.persistence.WbbsPersistenceDelegate.getByCriteria(WbbsPersisten
ceDelegate.java:296)
at
com.wbbs.persistence.WbbsPersistenceDelegate.getApplicationStatesSubmitt
ed(WbbsPersistenceDelegate.java:72)
at
com.wbbs.actions.admin.forms.ViewMortgagesAction.process(ViewMortgagesAc
tion.java:82)
at
com.intercea.servlet.BaseServlet.getPageForName(BaseServlet.java:380)
at
com.intercea.servlet.BaseServlet.getPageForRequest(BaseServlet.java:232)
at
com.intercea.servlet.BaseServlet.handleRequest(BaseServlet.java:213)
at
com.wbbs.servlet.WbbsBaseServlet.doGet(WbbsBaseServlet.java:183)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:256)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:242
2)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lve.java:171)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:163)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577
)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
at
org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: Stream has already been closed
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at
oracle.jdbc.dbaccess.DBDataSetImpl.getStreamItem(DBDataSetImpl.java:1572
)
at
oracle.jdbc.driver.OracleStatement.getBytesInternal(OracleStatement.java
:3285)
at
oracle.jdbc.driver.OracleStatement.getStringValue(OracleStatement.java:3
563)
at
oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.jav
a:434)
at
oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1482)
at
org.apache.ojb.broker.metadata.JdbcTypesHelper$T_LongVarChar.readValueFr
omResultSet(JdbcTypesHelper.java:437)
at
org.apache.ojb.broker.metadata.JdbcTypesHelper$BaseType.getObjectFromCol
umn(JdbcTypesHelper.java:324)
at
org.apache.ojb.broker.metadata.JdbcTypesHelper$BaseType.getObjectFromCol
umn(JdbcTypesHelper.java:303)
at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readValuesFrom(Ro
wReaderDefaultImpl.java:224)
... 48 more
Regards
Ravi