Hi, It's almost certain (at least for me with JBoss) the eager-release. I turned it off and everything i expected came back through the query.
Did get a few stack traces of the sort [CachedConnectionManager] Successfully closed a connection for you. Please close them yourself: [EMAIL PROTECTED] at org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376) at org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190) at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271) etc... I had eager-release on as thats's what it said to do in the deployment docs for JBoss 3.0 and greater. Unfortuanately inserts don't seem to work for ODMG when setting eager-release to false. I get a first stack trace, 18:08:22,070 INFO [CachedConnectionManager] Successfully closed a connection for you. Please close them yourself: [EMAIL PROTECTED] java.lang.Exception: Stack Trace at org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376) at org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190) at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271) followed by a few pages of 18:08:22,070 INFO [CachedConnectionManager] Successfully closed a connection for you. Please close them yourself: [EMAIL PROTECTED] java.lang.Exception: Stack Trace at org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376) at org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190) at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271) etc... which is probably why we need eager-release for JBoss. Presumably the eager-release gives OJB a hint to cleanup its connections before JBoss comes to repossess them. regards Gary -----Original Message----- From: Thomas Mahler [mailto:[EMAIL PROTECTED] Sent: 02 June 2003 17:44 To: OJB Users List Subject: Re: Limited collection returned 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]