org.apache.cayenne.remote.service
Class BaseRemoteService

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

public abstract class BaseRemoteService
extends java.lang.Object
implements RemoteService

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

Since:
1.2

Field Summary
protected  ObjectContextFactory contextFactory
           
protected  java.lang.String eventBridgeFactoryName
           
protected  java.util.Map<java.lang.String,java.lang.String> eventBridgeParameters
           
protected  org.apache.commons.logging.Log logger
           
 
Constructor Summary
BaseRemoteService(ObjectContextFactory contextFactory, java.util.Map<java.lang.String,java.lang.String> eventBridgeProperties)
           
 
Method Summary
protected  DataChannel createChannel()
          Creates a server-side channel that will handle all client requests.
protected  RemoteSession createRemoteSession(java.lang.String sessionId, java.lang.String name, boolean enableEvents)
           
protected abstract  ServerSession createServerSession()
          Creates a new ServerSession with a dedicated DataChannel.
protected abstract  ServerSession createServerSession(java.lang.String name)
          Creates a new ServerSession based on a shared DataChannel.
 RemoteSession establishSession()
          Establishes a dedicated session with Cayenne DataChannel, returning session id.
 RemoteSession establishSharedSession(java.lang.String name)
          Creates a new session with the specified or joins an existing one.
 java.lang.String getEventBridgeFactoryName()
           
 java.util.Map<java.lang.String,java.lang.String> getEventBridgeParameters()
           
protected abstract  ServerSession getServerSession()
          Returns a ServerSession object that represents Cayenne-related state associated with the current session.
protected  void initEventBridgeParameters(java.util.Map<java.lang.String,java.lang.String> properties)
          Initializes EventBridge parameters for remote clients peer-to-peer communications.
 java.lang.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

logger

protected final org.apache.commons.logging.Log logger

contextFactory

protected ObjectContextFactory contextFactory

eventBridgeFactoryName

protected java.lang.String eventBridgeFactoryName

eventBridgeParameters

protected java.util.Map<java.lang.String,java.lang.String> eventBridgeParameters
Constructor Detail

BaseRemoteService

public BaseRemoteService(ObjectContextFactory contextFactory,
                         java.util.Map<java.lang.String,java.lang.String> eventBridgeProperties)
Since:
3.1
Method Detail

getEventBridgeFactoryName

public java.lang.String getEventBridgeFactoryName()

getEventBridgeParameters

public java.util.Map<java.lang.String,java.lang.String> getEventBridgeParameters()

createServerSession

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


createServerSession

protected abstract ServerSession createServerSession(java.lang.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(java.lang.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 java.lang.Object processMessage(ClientMessage message)
                                throws java.lang.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:
java.lang.Throwable

createRemoteSession

protected RemoteSession createRemoteSession(java.lang.String sessionId,
                                            java.lang.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.


initEventBridgeParameters

protected void initEventBridgeParameters(java.util.Map<java.lang.String,java.lang.String> properties)
Initializes EventBridge parameters for remote clients peer-to-peer communications.



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