Hi Gennady,

we are doing similar background tasks here. To avoid memory problems we declared the generated HTML pages not to be stored into the page cache. This background pages implement the Interface IASUnsaveablePage:

public interface IASUnsaveablePage {

    /**
     * defines if this page should be saved in the WO page cache
     *
     * @return returning true is the same as not implementing
     *         the interface
     */
    public boolean shouldBeSavedInPageCache();
}

and in our custom session class we override savePage():

    /**
     * implements the meachanism for the IASUnsaveablePage
     *
     * @see IASUnsaveablePage#shouldBeSavedInPageCache()
     */
    @Override
    public void savePage(WOComponent page) {
        if (!(page instanceof IASUnsaveablePage)
            || ((IASUnsaveablePage) page).shouldBeSavedInPageCache()) {
            super.savePage(page);
        }
    }

Maybe you could use a similar approach?

HTH,
Susanne

Hello List!

I have a task to form an archive of a good bunch of WO-generated HTML
pages to HDD.
To achieve this I create a background thread to perform the task.

In this thread I create a dummy WOContext :

                WOApplication app = WOApplication.application();
                String dummyUrl = app.cgiAdaptorURL() + "/" + app.name() + 
".woa/wa/dummy";
                if(ses != null) {
                        dummyUrl = dummyUrl + "?wosid=" + ses.sessionID();
                }
                WORequest request = app.createRequest( "GET", dummyUrl, 
"HTTP/1.0",
null, null, null);
                WOContext dummyContext = new WOContext(request) {
                        public boolean shouldNotStorePageInBacktrackCache() {
                                return true;
                        }
                }

After that in a loop I prepare my pages (in fact there are several
WOComponent's in work):

                 WOComponent page =
WOApplication.application().pageWithName("MyPageName", dummyContext);

and write them to HDD:

                NSData content = page.generateResponse().content();
                content.writeToStream(fileOutputStream);


The problem is that when the loop is long and the page contents is
complex my JVM runs out of memory.
What am I doing wrong? It seems like WO is storing something
unnecessary, how should I tell it to forget that?
At least how can I diagnose what exactly the memory is filled with?

Gennady


--
Susanne Schneider
Coordinator secuTrial Development

iAS interActive Systems GmbH
Dieffenbachstraße 33 c, D-10967 Berlin

fon    +49(0)30 22 50 50 - 498
fax    +49(0)30 22 50 50 - 451
mail   susanne.schnei...@interactive-systems.de
web    http://www.interActive-Systems.de

----------------------------------------------------
Geschäftsführer: Dr. Marko Reschke, Thomas Fritzsche
Sitz der Gesellschaft: Berlin
Amtsgericht Berlin Charlottenburg, HRB 106103B
----------------------------------------------------
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to