[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: ISSUE 95: Proposed direction for resolution
The following is a high-level sketch of a proposed direction for resolving
issue JAVA-95. Comments and suggested improvements are most welcome.
1. Rename CONVERSATIONAL scope to STATEFUL scope.
2. Remove @Conversational and @EndsConversation from interfaces.
3. Introduce a new annotation @Correlation(name) for parameters of
service methods of STATEFUL-scoped implementations. When a method
of a STATEFUL-scoped implementation is dispatched by the SCA runtime,
the set of names and values identified by its @Correlation
annotations is used to attempt to locate an existing matching instance
in the component's correlated instance pool. If a matching instance
is found, it is used for the method dispatch. If no matching instance
is found, a new instance is created and placed in the correlated
instance pool, identified by the correlation set of names and values.
4. Introduce a new annotation @EndCorrelation for service methods of
STATEFUL-scoped implementations. When an @EndCorrelation method
is dispatched and returns to the SCA runtime, the instance that was
used for the dispatch is removed from the pool of correlated instances.
5. Introduce a new annotation @StartCorrelation for service methods of
STATEFUL-scoped implementations. When a @StartCorrelation method
is dispatched by the SCA runtime, an existing instance must not be
used for the dispatch, even if it matches the correlation set data.
If a matching instance is found, the SCA runtime MUST throw a
ServiceRuntimeException.
6. A method with no @Correlation annotations implies @EndCorrelation.
It will always create a new instance because it has no correlation
set data that can be used to match an existing instance in the
correlated instance pool.
7. Rename @ConversationAttributes to @CorrelationAttributes.
8. Remove Conversation class and @ConversationID annotation.
9. Remove stateful callbacks.
10. Remove isConversational() and getConversation() from CallbableReference.
11. Remove getConversationID() and setConversationID() from ServiceReference.
12. Remove ServiceReference class.
13. Remove ConversationEndedException.
Simon
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]