[
https://issues.apache.org/jira/browse/JDO-455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Craig Russell updated JDO-455:
------------------------------
Component/s: (was: specification)
Fix Version/s: (was: JDO 2 maintenance release 1)
Summary: Write test cases for serialization behavior of
PersistenceManager (was: Specify serialization behavior of PersistenceManager)
The specification has been updated. Now we need to write test cases for the
tck.
> Write test cases for serialization behavior of PersistenceManager
> -----------------------------------------------------------------
>
> Key: JDO-455
> URL: https://issues.apache.org/jira/browse/JDO-455
> Project: JDO
> Issue Type: New Feature
> Components: tck2, tck2-legacy
> Affects Versions: JDO 2 final
> Reporter: Craig Russell
>
> This is item 15 in the JDO 2.1 approved changes list. See
> http://wiki.apache.org/jdo/CurrentDevelopment
> In Chapter 12, specify the behavior of PersistenceManager if it extends
> Serializable and writeObject is called.
> The scenario we are looking at is where a front end web client accesses a web
> server via standard http/html protocol/data requests. Multiple interactions
> compose a database transaction. Additionally, new Javascript/AJAX patterns
> might allow the web page to send multiple concurrent requests to the same
> back end session, which must maintain state across these multiple requests.
> Some of the interactions might have the effect of changing state on the
> session, and these changes become part of the session state. While some of
> this state is transient, and used to update the back end database only upon
> specific request, other state represents persistent data (e.g. backing beans
> for forms). Changes to these backing beans must be maintained across requests
> and flushed to the database only upon specific behavior typically initiated
> from the front end client.
> Changes made to persistent backing beans present the possibility of database
> conflicts, which can be managed by implementing version checking on the beans
> and using optimistic locking protocols on the PersistenceManager. But there
> are cases where the session state must be serialized.
> Using a "PersistenceManager per request" pattern, a list of backing beans is
> maintained and when the request arrives, the beans are attached to the newly
> acquired PersistenceManager. When the request leaves, the beans are detached
> and maintained as session state. This pattern works well but there is a lot
> of infrastructure required in order to implement it. In particular, it is
> difficult to identify the list of persistent instances that must be detached
> and attached. The behavior of the beans depends on the environment.
> A somewhat easier pattern for the user to implement is the
> "PersistenceManager Per Session" pattern. With this pattern, a new
> PersistenceManager is acquired by the user for a session, which might span
> multiple requests. There is no need to keep track explicitly of persistent
> instances, because they are not required to be detached as long as the same
> PersistenceManager is used. This is the pattern we will focus on for the
> serializable PersistenceManager behavior.
> The state of the PersistenceManager's context consists of three somewhat
> independent parts: a) the state of the PersistenceManager itself, b) the
> state of the associated PersistenceManagerFactory, and c) the states of the
> user-visible persistent instances.
> For a), we can assume state such as the Optimistic and NontransactionalRead
> flags can be serialized in some proprietary way. For b), the configuration of
> the PersistenceManagerFactory for use in the web or application server might
> only need a jndi name, and the properties used to reconstruct the factory
> upon deserialization can be implementation-specific. But c) presents
> challenges.
> It is clear that the PersistenceManager has enough information to serialize
> the persistent instances in the cache, including the before-image information
> and the changed and loaded field information. But what is not clear is what
> the interaction should be between the instances and their own serialization
> contract. Specifically, if there are some persistent instances in the stored
> session state, these instances will be serialized along with the session
> itself according to the serialization contract of the session and the
> persistent classes.
> It seems that the interaction between the PersistenceManager and the
> serialization contracts of the session and persistent classes is the major
> issue for the specification.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.