I no longer use WO but I recall this framework in wonder: ERPersistentSessionStorage
Amedeo > On 17 May 2024, at 22:01, Martino Limido via Webobjects-dev > <webobjects-dev@lists.apple.com> wrote: > > Hi there, > > it’s important to note that the `WOContext` object in WebObjects ends with > the lifecycle of the request and response. This means that simply storing the > `WOContext` object is not feasible as it will no longer be available after > the request is completed. > > ### Possibility of Implementation: > > 1. **Context Serialization**: > - While WebObjects does not natively support serializing the entire > `WOContext`, it is possible to manually serialize the essential parts of the > context. This includes capturing the state of components, user inputs, and > any relevant session information. > - You can use `context().clone()` in `Session.sleep()` to clone the context > state. However, ensure that all referenced objects within the context are > serializable. This might involve customizing the serialization process for > complex objects. > > 2. **State Storage**: > - Store the serialized state in a persistent format, such as a database or > a session file. The storage mechanism should be robust enough to handle the > complexity of the serialized data and ensure it can be accurately retrieved > later. > > 3. **State Restoration**: > - In the `restorePreviousAction` DirectAction, implement a mechanism to > deserialize and reintegrate the previously saved state. This involves > reconstructing the `WOContext` and ensuring all components and user states > are accurately restored. > - This might require a custom deserialization logic to handle complex > objects and ensure they are correctly linked within the session. > > ### Challenges: > - **Complexity**: Serializing complex objects and managing cross-references > can significantly increase code complexity. WebObjects' inherent statefulness > and deep object graph make this particularly challenging. > - **Data Integrity**: Ensuring data consistency during the serialization and > deserialization process is critical. Any mismatch can lead to errors or > inconsistent application states. > - **Performance**: Serialization and deserialization can impact performance, > especially if the context is large or complex. It’s important to optimize > this process to minimize the performance overhead. > > ### Recommendation: > Given the complexities and potential issues with this approach, it might be > better to rethink the application design. Consider structuring the > application to use DirectActions with simpler states that are easier to > restore. This could involve: > - Breaking down complex states into smaller, more manageable parts that can > be easily serialized and deserialized. > - Ensuring that each DirectAction has a well-defined and minimal state that > can be captured and restored without requiring the entire context. > - Leveraging stateless designs where possible, and using session storage > judiciously to maintain essential state information. > > ### Conclusion: > Implementing this functionality is technically possible but requires > significant effort and a deep understanding of the object lifecycle in > WebObjects. Given that the `WOContext` object ends with the request/response > cycle, manually serializing and restoring its state is complex and > potentially error-prone. > > > Best regards, > Martino > >> Il giorno 17 mag 2024, alle ore 21:00, webobjects-dev- >> >> 1. re/store context somehow? (OCsite) >> >> >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Thu, 16 May 2024 21:14:39 +0200 >> From: OCsite <o...@ocs.cz> >> To: OCsite via Webobjects-dev <webobjects-dev@lists.apple.com> >> Subject: re/store context somehow? >> Message-ID: <1d450aeb-ded8-4b1a-8438-59039f31b...@ocs.cz> >> Content-Type: text/plain; charset="utf-8" >> >> Hi there, >> >> my client made a somewhat weird request: wants me to store ?the last context >> the user worked in? in his session, and restore it when the user comes to >> the application through a specific Direct Action (and the session still >> lives). >> >> In other words, suppose the user works in the app for awhile, and then >> closes his browser, remembering just the session ID, nothing else. >> >> Next thing he does, he opens >> .../OurApp.woa/wa/restorePrevious?wosid=prevSessionID ? and wow, he finds >> the browser window in precisely the same state it was when he closed the >> browser some time ago. (Far as possible of course, let's assume for >> simplicity the internal app/session/DB state did not change meantime.) >> >> I guess most probably I need to save context().clone() into session each >> time in Session.sleep(), that's not difficult. But then in my >> DirectAction.restorePreviousAction I need to resurrect the saved context >> somehow, but I can't find a way to do that. Does anybody know how to? >> >> Thanks! > _______________________________________________ > 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: > https://lists.apple.com/mailman/options/webobjects-dev/amedeomantica%40me.com > > This email sent to amedeomant...@me.com _______________________________________________ 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: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com