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

ISSUE 35: The ServiceReference interface should extend Serializable

From
Barack, Ron <>
Date
2008-04-10T15:33:28+00:00
ID
Thread
ISSUE 35: The ServiceReference interface should extend Serializable
http://www.osoa.org/jira/browse/JAVA-35

Von: Mark Combellack 
[mailto:] 
Gesendet: Mittwoch, 9. April 2008 
11:49
An: OASIS Java
Betreff: [sca-j] 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 →