Thank you for clarifying. The reason for for me asking these questions
is that it will be asked the very same questions once I recommend using
Wicket for the re-implementation of an existing application. I just want
to make sure that I have the correct answers :-)

J.

Johan Compagner wrote:
yes until the default 10MB.... i already said that.

On Fri, Jan 30, 2009 at 09:58, Jürgen Lind <juergen.l...@iteratec.de> wrote:

Thank you for pointing me to the means to tune the DiskPagestore size.
The only question that remains is whether it is normal that it keeps
growing
and by what extend.

J.



Johan Compagner wrote:

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



--
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




--
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

Reply via email to