You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Ravi Aramanethota <ra...@intercea.co.uk> on 2005/06/15 11:46:29 UTC

OJB 1.0.3 error reading Oracle LONG through reference

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

 

 

 

 


Re: OJB 1.0.3 error reading Oracle LONG through reference

Posted by Martin Kalén <mk...@apache.org>.
Ravi Aramanethota wrote:
> 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.

Oracle has some constraints with the order of columns read from a ResultSet
if any columns are of type BLOB, CLOB, LONGVARBINARY (and more?). Do you
have any such "large" columns in your object or the object referencing this
one?

You can try to use the ordering attribute of the repository.xml to
make sure columns are read in the right order. If you still don't get it to
work, use P6Spy to debug which SQL statements OJB sends to Oracle.

If you find out through P6Spy that your particular setup causes OJB to
select the same value column from the ResultSet more than once, you
can update from CVS on branch OJB_1_0_RELEASE since Armin has recently
fixed a problem related to this.

Regards,
  Martin


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org