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: NEW ISSUE: Concurrency model for Service Reference instances


Title: 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]