Question

I am writing a web application using VisualWorks Smalltalk, Seaside and Gemstone/S.

At the moment the session state for the client can be maintained only if the client always returns to the same image (though if the session expires the client can restart with any image).

I would like to understand whether it's feasible to share session state using the Gemstone/S database. This means straightforward http load balancing could be used and I wouldn't need to worry about image affinity for a large population of users.

I can see that all this is done "for free" with the Gemstone implementation of Seaside, but I would like to use Visualworks because it has a much more powerful IDE and I am already familiar with it. All references I can find on Google to this assume use of Gemstone smalltalk and the Gemstone implementation of Seaside.

Has anybody done this? If so are there any write ups of findings or tutorials I can follow? Many apologies if I have missed an obvious link on a search but I really couldn't see it.

Was it helpful?

Solution

As far as I know there is no easy way to do it. Very simplified, and ignoring many optimizations taken by Seaside, Seaside session is snapshot of execution stack waiting to be resumed. Migrating that frozen execution stack to another image and restarting it there is non trivial.

OTHER TIPS

Our application uses the same stack (Seaside, VW, GS), but we're not using the full GBS interface between VW & GS which allows for one VW image to service several Seaside sessions. Even in this mix, however, session affinity to each VW image is required.

Your reasons for developing your Seaside app in VW makes sense. It is indeed a better development environment, but you may consider splitting development and deployment: write your code in VW and deploy in GLASS. That's the conventional way to use GLASS, although with Pharo for development.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top