OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: ISSUE 8: Concurrency model for Service Reference instances


Title: NEW ISSUE: Concurrency model for Service Reference instances
http://www.osoa.org/jira/browse/JAVA-8


Von: Blohm, Henning [mailto:henning.blohm@sap.com]
Gesendet: Mittwoch, 26. September 2007 13:48
An: sca-j@lists.oasis-open.org
Betreff: [sca-j] NEW ISSUE: Concurrency model for Service Reference instances

TARGET:

Java Common Annotations and APIs specification, section "Java API" / {"ComponentContext", "ServiceReference"} and section "Asynchronous and Conversational Programming".

DESCRIPTION:

While the current text says that a service reference represents a single conversation, it is not clear how a multi-threaded client should protect a non-conversational service reference's configuration (conversation id, callback, etc) so that it stays unmodified by other threads until an actual invocation is executed.

Consider the following code snippet for example:

class AComponent {
  @Reference ItemCheckerService srv;

  void goCheckItem(long ticket, String itemId) {
        ServiceReference sr = (ServiceReference) srv;
        sr.setConversationID(ticket);
        srv.check(itemId);
  }
}

A simple synchronization may lead to strict serialization of remote calls which is generally undesirable.

PROPOSAL:

Several proposals have been discussed in the past:

a) A service reference instance is actually a thread local proxy to the reference target.
b) A single service reference represents exactly one actual or potential conversation. Each call to ComponentContext.getService (and similar methods) returns a new instance of ServiceReference.




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]