← Prev in month ← Prev in thread
Next in thread → Next in month →

NEW ISSUE: The ServiceReference interface should extend Serializable

From
Mark Combellack <>
Date
2008-04-09T09:49:18+00:00
ID
Thread
NEW ISSUE: The ServiceReference interface should extend Serializable
RAISER:  Mark Combellack

TARGET:  The ServiceReference interface should extend Serializable

DESCRIPTION: 

Document references taken from:

Service Component
Architecture Java Common Annotations and APIs Specification Version 1.1

Working Draft 28 February
2008

 

 

 

In several locations in the specification, it talks about passing
ServiceReference instances around. These include:

 

Section 6.3 Passing Conversational Services as Parameters contains the
following:

 

268    The service reference which represents a single
conversation can be passed as a parameter to

269    another service, even if that other service is
remote. This may be used in order to allow one

270    component to continue a conversation that had
been started by another.

 

 

Section 6.5 Conversation Lifetime Summary contains the following:

 

325 Continuing conversations

326 The client can continue an existing conversation, by:

327         Holding the service
reference that was created when the conversation started

328         Getting the service
reference object passed as a parameter from another service, even

329         remotely

330         Loading a service
reference that had been written to some form of persistent storage

 

 

The standard mechanism used by Java for transporting and persisting
objects is to use Serialization. Currently, ServiceReference is not
Serializable as it does not extend Serializable as ServiceReference and its
parent (CallableReference) do not extend Serializable.

 

 

Section 7.3 CallableReference

 

739 public interface CallableReference<B> {

 

 

Section 7.4 ServiceReference

 

769  public interface ServiceReference<B> extends
CallableReference<B>{

 

 

 

Making ServiceReference Serializable will allow:

 

·       
ServiceReferences to be passed
over @Remotable interfaces as a parameter

·       
ServiceReferences to be returned
by methods over @Remotable interfaces

·       
Standard approach for persisting
ServiceReferences to some form of persistent storage by using the JDK java.io.ObjectOutputStream
and java.io.ObjectInputStream classes.

·       
Applications that Serialize
ServiceReferences will be portable across different vendors SCA Implementations****
(i.e. the Application code will run on both SCA Implementations without
modification)

 

 

*** Note: I do not mean interoperable. I would not expect a ServiceReference
Serialized in Vendor 1 SCA Implementation to be able to be deserialized and
used in Vendor 2 SCA Implementation.

 

PROPOSAL: 

There are two possible options. My preferred approach is Option 1.

 

 

Option 1 - Make CallableReference extend Serializable

 

By making CallableReference extend Serializable, this will also make
ServiceReference Serializable.

 

The advantage of this approach is that a Component marked as @Conversational
but @Scope(“STATELESS”) can persist the @Callback and use it in subsequent
calls.

 

 

 

Option 2- Make just ServiceReference extend Serializable

 

This would mean that CallableReference is not Serializable and the
@Callback cannot be persisted by a Component marked as @Conversational but @Scope(“STATELESS”)
can persist the @Callback and use it in subsequent calls.

 

 

Thanks,

 

Mark
← Prev in month ← Prev in thread
Next in thread → Next in month →