So both of you use the eager-release="true" feature. Have you tried to disable it?
Maybe Armin knows a bit more about this feature ?
cheers, Thomas
Ken Dempster wrote:
My setup is as follows:
Jboss 3.2.1
OBJ 1.0 RC3
OJB.properties set to PersistenceBrokerImpl,
PersistenceBrokerFactoryDefaultImpl, and ConnectionFactoryManagedImpl,
ObjectCachePerBrokerImpl. DB2 database
Server AS400 running both Jboss and DB2
I generate my own JdbcConnectionDescriptor with the following settings:
JdbcConnectionDescriptor descriptor = new JdbcConnectionDescriptor();
descriptor.setBatchMode(false);
descriptor.setDatasourceName("java:DB2DS");
descriptor.setDbAlias("serverName");
descriptor.setDbms("Db2");
descriptor.setDefaultConnection(true);
descriptor.setEagerRelease(true);
descriptor.setIgnoreAutoCommitExceptions(false);
descriptor.setJcdAlias("java:DB2DS");
descriptor.setJdbcLevel("2.0");
descriptor.setPassWord("password");
descriptor.setProtocol("jdbc");
descriptor.setSubProtocol("db2");
descriptor.setUseAutoCommit(0);
descriptor.setUserName("user_name");
SequenceDescriptor sequenceDescriptor = new
SequenceDescriptor("org.apache.ojb.broker.util.sequence.SequenceManagerN
extValImpl");
- Ken
Ken Dempster Programmer Analyst Vision Solutions, Inc.
17911 Von Karman Ave, 5th Floor Irvine, CA 92614 UNITED STATES
Tel: +1 (949) 253-6500
Fax: +1 (949) 253-6501
Email: [EMAIL PROTECTED]
<http://www.visionsolutions.com/>
Disclaimer - 6/2/2003
The contents of this e-mail (and any attachments) are confidential, may be privileged, and may contain copyright material of Vision Solutions, Inc. or third parties. You may only reproduce or distribute the material if you are expressly authorized by Vision Solutions to do so. If you are not the intended recipient, any use, disclosure or copying of this e-mail (and any attachments) is unauthorized. If you have received this e-mail in error, please immediately delete it and any copies of it from your system and notify us via e-mail at [EMAIL PROTECTED] -----Original Message-----
From: McCaffrey, John G. [mailto:[EMAIL PROTECTED] Sent: Monday, June 02, 2003 8:02 AM
To: 'OJB Users List'
Subject: RE: Limited collection returned
Thanks for your investigation Gary. This is exactly what I was suspecting (RSIterator not iterating), now I guess the thing is to figure out how the result set got closed. I am not sure why there seem to be only a few people having this problem, it seems like such basic functionality that there would be more of an uproar. It makes me wonder what the afflicted have in common, and for those people that can get a collection of dependent objects, how is their setup different (assuming that there are people that are not having this problem)
my setup
I have the basic OJB.props settings default PersistenceBrokerImpl, PersistenceBrokerFactoryDefaultImpl,
ConnectionManagerImpl, and I am using ConnectionFactoryDBCPImpl (though I have tried the others
and still have the problem).
Windows 2000, db-ojb-1.0.rc3.jar, commons-dbcp.jar I am using WSAD (with datasource) and DB2, and I am using the PB API.
###### Gary, Dan, Jin, Ken, etc what is your basic setup?
Is there anybody with this same setup that is able to get a collection of dependent objects? (help me figure out what i have that is different) ###### I feel like a solution is right around the corner. (and its a good thing, because I am supposed to go to production by the end of the week!)
Thanks to Gary and everyone that is looking into this. -john
-----Original Message----- From: Gary Richards [mailto:[EMAIL PROTECTED] Sent: Monday, June 02, 2003 9:05 AM To: OJB Users List Subject: RE: Limited collection returned
Hi everyone,
Thought I'd offer my current observations on this as I work with Dan and
am running off the same codebase (JBoss 3.2.x, MySql, ODMG etc....) and
therefore trying to crack the same problem.
I've been using the eclipse debugger to step through the action of
invoking a query. I have spent most of the recent time observing private ManageableCollection getCollectionByQuery(Class collectionClass,
Class itemClass, Query query) of the PersistanceBrokerImpl class (line
1293), inparticular the actions of the while loop on line 1335 which
reads as,
while (((endAt == Query.NO_END_AT_INDEX) || (retrievedCount <
numberOfObjectsToFetch)) && iter.hasNext())
I have witnessed the hasNext() call of this condition to return false
during the second cycle of the loop, even though I now there to be 13
rows in the database table and 13 elements behind the Iterator. I have
determined this (for those who know eclipse) by editing the detail
formatter of the RSIterator class to read "this.size()" which shows 13
when I highlight it.
This leads me onto RSIterator.hasNext() (line 216) which I have moved
onto observe as a result. I noticed that on the second cycle of the iterator, the call from within
hasNext() will issue
hasNext = m_rsAndStmt.m_rs.next(); (line 223)
This throws an expection which is caught by the same method so that
false is returned. catch (Exception ex)
{
hasNext = false;
}
I have noticed that the message given by this exception ex (which is not
logged, only gets caught) is "Operation not allowed after ResultSet
closed". This certainly suggests that something has closed the ResultSet
before the iterator has been fininshed with (exactly what it says in the
message ;) ).
This almost always seems to happen after dependant objects have been
retieved as when we set auto-retrieve = "false" in repository_user.xml
for the appropriate property we get all rows of the single table we
query on but no dependant objects, however when we set auto-retrieve =
"true" we get only the first row of the single table and all its
dependant objects.
Is this possibly linked to the eager-release feature which needs to be
enabled for operation on JBoss, or a side effect of bug OJB172?
Any other thoughts?
regards
Gary
-----Original Message----- From: Dan Hanley Sent: Mon 02/06/2003 14:38 To: OJB Users List Cc: Subject: RE: Limited collection returned
Jin
Are you also running in a managed environment (e.g. jBoss)?
I suspect the bug you're referring to is:
Type : Defect
Issue Id : OJB172
Reported by: Rob Kischuk
rkischuk - (rkischuk <at> gttx.org)
Details:
Platform: PC
Operating system: windows 2000
Summary: Loading composite object leads to truncated collection
Description: Repeated calls to retrieve a collection of objects
that each contain another object are
retrieving truncated results, which are incrementally built to
their proper length using repeated
requests.
Status: New
Priority: Undecided
Severity: Major
Functional area: Setup
... which sounds like it could be the culprit. A colleague of
mine is trying to trace through with the eclipse debugger to see if we
can cast any light on this.
You are not alone, its holding a lot of people up...
Dan
-----Original Message-----
From: Jin Bal [mailto:[EMAIL PROTECTED]
Sent: Fri 30/05/2003 22:07
To: OJB Users List
Cc:
Subject: Re: Limited collection returned
I'm also having this problem - thank god someone else's
said so ! it's been
driving me mad ;-)
i've been using ojb since 0.9.5 and have only noticed it
recently. (sorry
can't be more precise than that)
here's the offending class descriptor
<class-descriptor
class="com.buyacar.businessobjects.Vehicle"
table="vehicle">
....blah blah properties etc
<!-- IMAGES -->
<collection-descriptor
name="images"
auto-retrieve="true"
element-class-ref="com.buyacar.businessobjects.VehicleImage">
<inverse-foreignkey field-id-ref="1"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="com.buyacar.businessobjects.BACVehicleDetails"
table="bac_details">
<reference-descriptor
name="vehicle"
class-ref="com.buyacar.businessobjects.Vehicle"
auto-retrieve="true">
<foreignkey field-id-ref="2"/>
</reference-descriptor>
</class-descriptor>
whenever I load a BACVehicleDetails (and therefore a
Vehicle) I only ever
get one image in the collection.
more over I have a search engine that only returns 1
result the first time
then 2 on the second submit then 3 ......etc :-(
heres the search engine code
PersistenceBroker broker = null;
try {
broker = getBroker();
Criteria criteria = new Criteria();
// check if theyve specified a price bracket
if(searchParams.getMaxPrice() !=null &&
searchParams.getMinPrice()!=null) {
criteria.addBetween("price",searchParams.getMinPrice(),searchParams.getM
axPr
ice());
} else if(searchParams.getMaxPrice()!=null
&&
searchParams.getMinPrice()==null) {
criteria.addLessOrEqualThan("price",searchParams.getMaxPrice());
} else if(searchParams.getMaxPrice()==null
&&
searchParams.getMinPrice()!=null) {
criteria.addGreaterOrEqualThan("price",searchParams.getMinPrice());
}
if(searchParams.getManufacturer() !=null &&
searchParams.getModel()==null) {
criteria.addEqualTo("vehicle.model.manufacturerId",searchParams.getManuf
actu
rer());
}
if(searchParams.getModel() !=null) {
criteria.addEqualTo("vehicle.modelId",searchParams.getModel());
}
if(searchParams.getBodyStyle() != null) {
criteria.addEqualTo("vehicle.derivative.bodyStyleId",searchParams.getBod
ySty
le());
}
if(searchParams.getFuelType() != null) {
criteria.addEqualTo("vehicle.derivative.fuelId",searchParams.getFuelType
());
}
if(searchParams.getOrderBy() !=null) {
criteria.addOrderByAscending(searchParams.getOrderBy());
}
if(searchParams.getChannel()!=null &&
!searchParams.getChannel().equals("")) {
criteria.addEqualTo("channel",searchParams.getChannel());
}
criteria.addEqualTo("status",searchParams.getStatus());
criteria.addEqualTo("visibility",searchParams.getVisibility());
criteria.addGreaterOrEqualThan("displayTo",new
java.util.Date());
criteria.addLessOrEqualThan("displayFrom",new
java.util.Date());
Query query = new
QueryByCriteria(BACVehicleDetails.class,criteria,true);
Collection c =
broker.getCollectionByQuery(query);
logger.debug("collection size: "+c.size());
Iterator results = c.iterator();
ArrayList list = new ArrayList();
while(results.hasNext()) {
// perform cast now to check that we've
got the correct
object type
BACVehicleDetails vDetails =
(BACVehicleDetails)
results.next();
list.add(vDetails);
}
return list;
} finally {
if (broker!=null) {
broker.close();
}
}
sorry for the long code post
it seems that when the cache is filled up it works ok
help this is stopping me going live with the site :-(
BTW I did a search on the dev list and noticed a bug
opened on the 23rd MAy
but i can't find it now
cheers
Jin
----- Original Message -----
From: "McCaffrey, John G." <[EMAIL PROTECTED]>
To: "'OJB Users List'" <[EMAIL PROTECTED]>
Sent: Friday, May 30, 2003 5:52 PM
Subject: RE: Limited collection returned
> yes, I also noticed that, and I tried pre-fetching,
but that didn't help
me
> either.
>
> so are you having the same problem then? You are only
getting one row
back,
> instead of many?
>
> (my collection is filled properly with the right child
elements, but I am
> not getting all of the parents that match the query,
and the query is
select
> all parents)
>
> can you see the SQL? I couldn't get P6Spy to work, so
I don't know what
the
> sql looks like.
>
> thanks for speaking up, I wonder if anyone else has
had/is having this
> problem!
>
> -John
>
> -----Original Message-----
> From: Dan Hanley [mailto:[EMAIL PROTECTED]
> Sent: Friday, May 30, 2003 11:47 AM
> To: OJB Users List
> Subject: RE: Limited collection returned
>
>
> John
> Setting auto-retrieve = "false" works for me using
JBoss & mySQL *except*
> that then I don't get any dependant ojbects loaded :-(
>
>
> -----Original Message-----
> From: McCaffrey, John G.
[mailto:[EMAIL PROTECTED]
> Sent: 30 May 2003 17:45
> To: 'OJB Users List'
> Subject: RE: Limited collection returned
>
>
> I have been having the same problem. It seems like the
initial query
> actually gets all the rows, but the RSIterator only
gives you one at a
time.
> In my situation if I have 4 rows that match the
query, and I execute the
> query once, I only get one row, each additional time I
execute the query I
> get one more row (all previous rows are also returned
in the collection).
> This is only happening for a referenced collection,
all of my other
queries
> are working fine. I have no Idea what the deal is, I
really hope that
> someone can help you.
>
> -John
>
> -----Original Message-----
> From: Ken Dempster
[mailto:[EMAIL PROTECTED]
> Sent: Friday, May 30, 2003 11:38 AM
> To: [EMAIL PROTECTED]
> Subject: Limited collection returned
>
>
> Most everything works except I only get one out of the
know four row
> objects from the table in my collection. I want to
get all the row
> objects in the table. My question is why am I only
getting only one row
> object? I am not sure what I am doing something
wrong.
>
> Here is how I have things setup. I have set jboss 3.2
as suggested in
> the deployment section of the documentation and have
jboss configured it
> with data source to connect to a DB2 database. I am
requesting a
> collection from a client to a SessionBean that
delegates to a
> PersistenceBroker instance. Basicly I am using the
code
in
> PersistenceBrokerBean as a template for my EJB. I do
generate my own
> JdbcConnectionDescriptor and pass it to the
ConnectionRepository instead
> of using the repository.xml to define my
JdbcConnectionDescriptor.
>
> My query looks as follows:
> Query query = new QueryByCriteria(Runner.class, null);
>
> Collection list =
>
getPersistenceBrokerRemote().getCollectionByQuery(query);
>
>
> My ClassDescriptor of the collection of objects I am
trying to get is
> defined in the repository_user.xml as follows :
>
> <class-descriptor class="test.ojb.Runner"
table="KENLIB.RUNNER">
>
> <field-descriptor name="m_id" column="ID"
jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_name" column="NAME"
jdbc-type="VARCHAR"/>
>
> <collection-descriptor name="m_times"
element-class-ref="test.ojb.Time">
>
> <inverse-foreignkey field-ref="m_id"/>
>
> </collection-descriptor>
>
> </class-descriptor>
>
> <class-descriptor class="test.ojb.Race"
table="KENLIB.RACE">
>
> <field-descriptor name="m_id" column="ID"
jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_location" column="LOCATION"
> jdbc-type="VARCHAR"/>
>
> <field-descriptor name="m_date" column="DATE"
jdbc-type="DATE"/>
>
> </class-descriptor>
>
> <class-descriptor class="test.ojb.Time"
table="KENLIB.RACE_TIME">
>
> <field-descriptor name="m_id" column="ID"
jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_runner_id"
column="RUNNER_ID"
> jdbc-type="INTEGER"/>
>
> <field-descriptor name="m_race_id" column="RACE_ID"
> jdbc-type="INTEGER"/>
>
> <field-descriptor name="m_time" column="TIME"
jdbc-type="VARCHAR"/>
>
> <reference-descriptor name="m_race"
class-ref="test.ojb.Race">
>
> <foreignkey field-ref="m_race_id"/>
>
> </reference-descriptor>
>
> </class-descriptor>
>
>
>
>
> Ken Dempster
> Programmer Analyst
> Vision Solutions, Inc.
>
> 17911 Von Karman Ave, 5th Floor
> Irvine, CA 92614
> UNITED STATES
>
> Tel: +1 (949) 253-6500
> Fax: +1 (949) 253-6501
> Email: [EMAIL PROTECTED]
> <http://www.visionsolutions.com/>
> Disclaimer - 5/30/2003
> The contents of this e-mail (and any attachments) are
confidential, may be
> privileged, and may contain copyright material of
Vision Solutions, Inc.
or
> third parties. You may only reproduce or distribute
the material if you
are
> expressly authorized by Vision Solutions to do so. If
you are not the
> intended recipient, any use, disclosure or copying of
this e-mail (and any
> attachments) is unauthorized. If you have received
this e-mail in error,
> please immediately delete it and any copies of it from
your system and
> notify us via e-mail at [EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
