org.apache.cayenne.remote.service
Class BaseRemoteService

java.lang.Object
  extended by org.apache.cayenne.remote.service.BaseRemoteService
All Implemented Interfaces:
Remote, RemoteService
Direct Known Subclasses:
HttpRemoteService

public abstract class BaseRemoteService
extends Object
implements RemoteService

A generic implementation of an RemoteService. Subclasses can be customized to work with different remoting mechanisms, such as Hessian or JAXRPC.

Since:
1.2

Field Summary
protected  Configuration configuration
           
protected  DataDomain domain
           
static String EVENT_BRIDGE_FACTORY_PROPERTY
           
protected  String eventBridgeFactoryName
           
protected  Map eventBridgeParameters
           
 
Constructor Summary
BaseRemoteService()
           
 
Method Summary
protected  DataChannel createChannel()
          Creates a server-side channel that will handle all client requests.
protected  RemoteSession createRemoteSession(String sessionId, String name, boolean enableEvents)
           
protected abstract  ServerSession createServerSession()
          Creates a new ServerSession with a dedicated DataChannel.
protected abstract  ServerSession createServerSession(String name)
          Creates a new ServerSession based on a shared DataChannel.
protected  void destroyService()
          Shuts down this service.
 RemoteSession establishSession()
          Establishes a dedicated session with Cayenne DataChannel, returning session id.
 RemoteSession establishSharedSession(String name)
          Creates a new session with the specified or joins an existing one.
 String getEventBridgeFactoryName()
           
 Map getEventBridgeParameters()
           
 DataChannel getRootChannel()
          Returns a DataChannel that is a parent of all session DataChannels.
protected abstract  ServerSession getServerSession()
          Returns a ServerSession object that represents Cayenne-related state associated with the current session.
protected  void initCayenneStack(Map properties)
          Sets up Cayenne stack.
protected  void initEventBridgeParameters(Map properties)
          Initializes EventBridge parameters for remote clients peer-to-peer communications.
protected  void initService(Map properties)
          A method that sets up a service, initializing Cayenne stack.
 Object processMessage(ClientMessage message)
          Processes message on a remote server, returning the result of such processing.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EVENT_BRIDGE_FACTORY_PROPERTY

public static final String EVENT_BRIDGE_FACTORY_PROPERTY
See Also:
Constant Field Values

configuration

protected Configuration configuration

domain

protected DataDomain domain

eventBridgeFactoryName

protected String eventBridgeFactoryName

eventBridgeParameters

protected Map eventBridgeParameters
Constructor Detail

BaseRemoteService

public BaseRemoteService()
Method Detail

getEventBridgeFactoryName

public String getEventBridgeFactoryName()

getEventBridgeParameters

public Map getEventBridgeParameters()

initService

protected void initService(Map properties)
                    throws CayenneRuntimeException
A method that sets up a service, initializing Cayenne stack. Should be invoked by subclasses from their appropriate service lifecycle methods.

Throws:
CayenneRuntimeException

destroyService

protected void destroyService()
Shuts down this service. Should be invoked by subclasses from their appropriate service lifecycle methods.


getRootChannel

public DataChannel getRootChannel()
Returns a DataChannel that is a parent of all session DataChannels.


createServerSession

protected abstract ServerSession createServerSession()
Creates a new ServerSession with a dedicated DataChannel.


createServerSession

protected abstract ServerSession createServerSession(String name)
Creates a new ServerSession based on a shared DataChannel.

Parameters:
name - shared session name used to lookup a shared DataChannel.

getServerSession

protected abstract ServerSession getServerSession()
Returns a ServerSession object that represents Cayenne-related state associated with the current session. If ServerSession hasn't been previously saved, returns null.


establishSession

public RemoteSession establishSession()
Description copied from interface: RemoteService
Establishes a dedicated session with Cayenne DataChannel, returning session id.

Specified by:
establishSession in interface RemoteService

establishSharedSession

public RemoteSession establishSharedSession(String name)
Description copied from interface: RemoteService
Creates a new session with the specified or joins an existing one. This method is used to bootstrap collaborating clients of a single "group chat".

Specified by:
establishSharedSession in interface RemoteService

processMessage

public Object processMessage(ClientMessage message)
                      throws Throwable
Description copied from interface: RemoteService
Processes message on a remote server, returning the result of such processing.

Specified by:
processMessage in interface RemoteService
Throws:
Throwable

createRemoteSession

protected RemoteSession createRemoteSession(String sessionId,
                                            String name,
                                            boolean enableEvents)

createChannel

protected DataChannel createChannel()
Creates a server-side channel that will handle all client requests. For shared sessions the same channel instance is reused for the entire group of clients. For dedicated sessions, one channel per client is created.

This implementation returns ClientServerChannel instance wrapping a DataContext. Subclasses may override the method to customize channel creation. For instance they may wrap channel in the custom interceptors to handle transactions or security.


initCayenneStack

protected void initCayenneStack(Map properties)
Sets up Cayenne stack.


initEventBridgeParameters

protected void initEventBridgeParameters(Map properties)
Initializes EventBridge parameters for remote clients peer-to-peer communications.



Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.