Posted By:
Brian_Grey
Posted On:
Sunday, February 6, 2005 10:26 AM
Here is my problem: In my web application deployed on Tomcat, there is a search page that can retrieve all objects from an Oracle database. These objects are phone cards objects that have properties like phone number, profile, etc
The client can have 100.000, 200.000 cards or more in the system. Actually when the client wants to see the result of his search, the system displays it in pages with 15 objects (or cards) per page. On the top of the page there is a direct link of the other pages. So the client can navigate trough all pages using these links or using the previous/next buttons. The problem is: when the client doesnt put any criteria into the search page (meaning that hes going to get all
More>>
Here is my problem:
In my web application deployed on Tomcat, there is a search page that can retrieve all objects from an Oracle database. These objects are phone cards objects that have properties like phone number, profile, etc
The client can have 100.000, 200.000 cards or more in the system. Actually when the client wants to see the result of his search, the system displays it in pages with 15 objects (or cards) per page. On the top of the page there is a direct link of the other pages. So the client can navigate trough all pages using these links or using the previous/next buttons.
The problem is: when the client doesnt put any criteria into the search page (meaning that hes going to get all objects (= can be 10.000, 100.000 or more)), the system returns out of memory after a few long minutes.
The search functionality returns a collection of objects. A page iterator splits it into several pages. I think that the collection that contains the result cannot handle it.
By the way, Im using Kodo as a persistence manager.
Here is the method that retrieves all objects from a search (with an empty filter in this case)
protected Collection execute(Class type, String filter) {
final Extent extent = getPersistenceManager().getExtent(type, true);
query = pm.newQuery(extent, filter);
query.setOrdering(orderBy + " " + (orderAscending ? "ascending" : "decending"));
final Collection result = (Collection) query.execute();
return result;
}
Thanks
<<Less