yes it grows until a max public DiskPageStore() { this((int)Bytes.megabytes(10).bytes(), (int)Bytes.megabytes(100).bytes(), 50); }
(10MB for one pagemap and 100MB for a complete session over multiply pagemaps) On Fri, Jan 30, 2009 at 09:44, Jürgen Lind <juergen.l...@iteratec.de> wrote: > Probably I was a bit unclear, I was talking about the serialized session > on disk. Does the "should not grow" aspect apply there, too? > > J. > > > Igor Vaynberg wrote: > >> considering wicket only keeps last-accessed page in session your >> session shouldnt just keep growing... >> >> -igor >> >> On Thu, Jan 29, 2009 at 11:20 PM, Jürgen Lind <juergen.l...@iteratec.de> >> wrote: >> >>> One more thing: just as a rule of thumb, what would be a reasonable >>> amount of data that gets added to the session for a single request? >>> 20k? 100k? >>> >>> Regards, >>> >>> J. >>> >>> >>> >>> Michael Sparer wrote: >>> >>>> I took a cursory glance over your code and saw >>>> >>>> item.add(new Link("update", new Model(auftrag)) >>>> >>>> this way the "auftrag" gets into your session, you should say >>>> item.getModel() there instead of new Model(auftrag) >>>> >>>> check your code if there is similar stuff in it - spotting those things >>>> might be quite tedious, but you could e.g. temporarily remove the >>>> "Serializable" from your model-classes and go spotting nonserializable >>>> exceptions until they don't ocurr anymore. >>>> hope that helps a bit - and thanks for beating leverkusen in 2000 ;-) >>>> >>>> regards, >>>> Michael >>>> >>>> Jürgen Lind-2 wrote: >>>> >>>>> After some twiddling I found that the PagingNavigator seems to be the >>>>> culprit. >>>>> If I leave it out, the session grows only moderately, when I put it in, >>>>> the >>>>> domain objects end up in the session... Anyway here is the code: >>>>> >>>>> public class AuftragUebersicht extends MasterLayout { >>>>> >>>>> @SpringBean >>>>> private AuftragBA auftragBA; >>>>> >>>>> public AuftragUebersicht() { >>>>> this.initComponents(); >>>>> } >>>>> >>>>> private void initComponents() { >>>>> >>>>> final AuftragDataView auftragDataView = new >>>>> AuftragDataView("resultList", >>>>> new AuftragDataProvider(AuftragUebersicht.this.auftragBA), 10); >>>>> >>>>> Form form = new Form("searchForm") { >>>>> >>>>> public Form initComponents() { >>>>> final TextField auftragsnummerField = new >>>>> TextField("auftragsnummer", >>>>> new >>>>> Model("")); >>>>> add(auftragsnummerField); >>>>> >>>>> Button searchButton = new Button("search") { >>>>> public void onSubmit() { >>>>> String auftragsnummer = >>>>> auftragsnummerField.getModelObjectAsString(); >>>>> >>>>> AuftragDataProvider p = (AuftragDataProvider) >>>>> auftragDataView.getDataProvider(); >>>>> p.setQuery(new AuftragUebersichtQuery(auftragsnummer)); >>>>> >>>>> if (auftragDataView.getDataProvider().size() == 0) { >>>>> AuftragUebersicht.this.info("No results found!"); >>>>> } >>>>> } >>>>> }; >>>>> add(searchButton); >>>>> >>>>> return this; >>>>> } >>>>> >>>>> }.initComponents(); >>>>> >>>>> WebMarkupContainer resultListContainer = new >>>>> WebMarkupContainer("resultListContainer") { >>>>> public boolean isVisible() { >>>>> return auftragDataView.getDataProvider().size() > 0; >>>>> } >>>>> }; >>>>> >>>>> CheckGroup group = new CheckGroup("group", new >>>>> ArrayList<PartnerAuftrag>()); >>>>> >>>>> group.add(new CheckGroupSelector("groupselector")); >>>>> >>>>> group.add(auftragDataView); >>>>> >>>>> resultListContainer.add(new PagingNavigator("navigator", >>>>> auftragDataView)); >>>>> >>>>> resultListContainer.add(group); >>>>> >>>>> form.add(resultListContainer); >>>>> >>>>> this.add(form); >>>>> >>>>> } >>>>> } >>>>> >>>>> public class AuftragDataView extends DataView { >>>>> >>>>> public AuftragDataView(String id, IDataProvider dataProvider, int >>>>> itemsPerPage) { >>>>> super(id, dataProvider, itemsPerPage); >>>>> } >>>>> >>>>> @Override >>>>> protected void populateItem(final Item item) { >>>>> >>>>> final PartnerAuftrag auftrag = (PartnerAuftrag) >>>>> item.getModelObject(); >>>>> item.add(new Label("auftragsnummer", auftrag.getAuftragsnummer())); >>>>> ... >>>>> >>>>> item.add(new Link("update", new Model(auftrag)) { >>>>> public void onClick() { >>>>> AuftragBearbeiten page = new AuftragBearbeiten((PartnerAuftrag) >>>>> getModelObject()); >>>>> setResponsePage(page); >>>>> } >>>>> }); >>>>> >>>>> item.add(new AttributeModifier("class", true, new >>>>> AbstractReadOnlyModel() { >>>>> public Object getObject() { >>>>> return (item.getIndex() % 2 == 1) ? "even" : "odd"; >>>>> } >>>>> })); >>>>> } >>>>> >>>>> @Override >>>>> protected void onDetach() { >>>>> super.onDetach(); >>>>> } >>>>> } >>>>> >>>>> public class AuftragDataProvider implements IDataProvider { >>>>> >>>>> private AuftragBA auftragBA; >>>>> private AuftragUebersichtQuery query; >>>>> >>>>> private Collection<PartnerAuftrag> result; >>>>> >>>>> public AuftragDataProvider(AuftragUebersichtQuery query, AuftragBA >>>>> auftragBA) { >>>>> this.query = query; >>>>> this.auftragBA = auftragBA; >>>>> } >>>>> >>>>> public AuftragUebersichtQuery getQuery() { >>>>> return this.query; >>>>> } >>>>> >>>>> public void setQuery(AuftragUebersichtQuery query) { >>>>> this.query = query; >>>>> this.result = null; >>>>> } >>>>> >>>>> public Iterator<PartnerAuftrag> iterator(int first, int count) { >>>>> if (this.result == null) { >>>>> this.performQuery(); >>>>> } >>>>> return new ArrayList<PartnerAuftrag>(this.result).subList(first, >>>>> first + count).iterator(); >>>>> } >>>>> >>>>> public IModel model(final Object object) { >>>>> return new DetachablePartnerAuftragModel((PartnerAuftrag) object, >>>>> this.auftragBA); >>>>> } >>>>> >>>>> public int size() { >>>>> if (this.result == null) { >>>>> this.performQuery(); >>>>> } >>>>> return this.result.size(); >>>>> } >>>>> >>>>> public void detach() { >>>>> this.result = null; >>>>> } >>>>> >>>>> private void performQuery() { >>>>> ... >>>>> } >>>>> } >>>>> >>>>> >>>>> public class DetachablePartnerAuftragModel extends >>>>> LoadableDetachableModel >>>>> { >>>>> >>>>> private Long id; >>>>> private AuftragBA auftragBA; >>>>> >>>>> public DetachablePartnerAuftragModel(PartnerAuftrag auftrag, AuftragBA >>>>> auftragBA) { >>>>> this(auftrag.getAuftragsId(), auftragBA); >>>>> } >>>>> >>>>> public DetachablePartnerAuftragModel(Long id, AuftragBA auftragBA) { >>>>> this.id = id; >>>>> this.auftragBA = auftragBA; >>>>> } >>>>> >>>>> @Override >>>>> protected Object load() { >>>>> return this.auftragBA.findAuftragByAuftragsId(this.id); >>>>> } >>>>> >>>>> @Override >>>>> protected void onDetach() { >>>>> super.onDetach(); >>>>> } >>>>> } >>>>> >>>>> Michael Sparer wrote: >>>>> > the objects shouldn't be serialized into the session if you're using >>>>> > loadabledetachable models, please show us some code >>>>> > >>>>> > regards, >>>>> > Michael >>>>> > >>>>> > >>>>> > Jürgen Lind-2 wrote: >>>>> >> Hi, >>>>> >> >>>>> >> I have a question on how the DataView component is supposed to >>>>> work. >>>>> In my >>>>> >> application, I have to show quite large list of entities and so I >>>>> am >>>>> using >>>>> >> a DataView together with LoadableDetachableModels to read the data >>>>> on >>>>> >> demand. >>>>> >> However, when looking at the serialized sessions, I can observe >>>>> that >>>>> the >>>>> >> session size constantly increases by a fairly large amount although >>>>> I >>>>> am >>>>> >> just using the navigator to page through the list. Also, when >>>>> looking >>>>> into >>>>> >> the serialized session, I can see that the objects that are >>>>> supposed >>>>> to >>>>> >> be reloaded on demand are serialized into the session as well. >>>>> >> >>>>> >> Is this the behavior that I would expect from the DataView or am I >>>>> making >>>>> >> some mistake here? >>>>> >> >>>>> >> Regards, >>>>> >> >>>>> >> J. >>>>> >> >>>>> >> -- >>>>> >> Dr. Jürgen Lind >>>>> >> iteratec GmbH Fon: +49 (0)89 614551-44 >>>>> >> Inselkammerstrasse 4 Fax: +49 (0)89 614551-10 >>>>> >> 82008 Unterhaching Web: www.iteratec.de >>>>> >> >>>>> >> Sitz und Registergericht der iteratec GmbH: München HRB 113 519 >>>>> >> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf >>>>> Menzel >>>>> >> >>>>> >> >>>>> >> >>>>> --------------------------------------------------------------------- >>>>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> >> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >> >>>>> >> >>>>> >> >>>>> > >>>>> > >>>>> > ----- >>>>> > Michael Sparer >>>>> > http://talk-on-tech.blogspot.com >>>>> >>>>> -- >>>>> Mit freundlichen Grüßen, >>>>> >>>>> Jürgen Lind >>>>> >>>>> -- >>>>> Dr. Jürgen Lind >>>>> iteratec GmbH Fon: +49 (0)89 614551-44 >>>>> Inselkammerstrasse 4 Fax: +49 (0)89 614551-10 >>>>> 82008 Unterhaching Web: www.iteratec.de >>>>> >>>>> Sitz und Registergericht der iteratec GmbH: München HRB 113 519 >>>>> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf >>>>> Menzel >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>>> >>>>> >>>>> >>>> ----- >>>> Michael Sparer >>>> http://talk-on-tech.blogspot.com >>>> >>> -- >>> Mit freundlichen Grüßen, >>> >>> Jürgen Lind >>> >>> -- >>> Dr. Jürgen Lind >>> iteratec GmbH Fon: +49 (0)89 614551-44 >>> Inselkammerstrasse 4 Fax: +49 (0)89 614551-10 >>> 82008 Unterhaching Web: www.iteratec.de >>> >>> Sitz und Registergericht der iteratec GmbH: München HRB 113 519 >>> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf Menzel >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > -- > Mit freundlichen Grüßen, > > Jürgen Lind > > -- > Dr. Jürgen Lind > iteratec GmbH Fon: +49 (0)89 614551-44 > Inselkammerstrasse 4 Fax: +49 (0)89 614551-10 > 82008 Unterhaching Web: www.iteratec.de > > Sitz und Registergericht der iteratec GmbH: München HRB 113 519 > Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf Menzel > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >