org.apache.jcs.auxiliary.remote
Class RemoteCacheListener

java.lang.Object
  extended byorg.apache.jcs.auxiliary.remote.RemoteCacheListener
All Implemented Interfaces:
ICacheListener, IRemoteCacheConstants, IRemoteCacheListener, java.rmi.Remote, java.io.Serializable

public class RemoteCacheListener
extends java.lang.Object
implements IRemoteCacheListener, IRemoteCacheConstants, java.io.Serializable

Registered with RemoteCache server. The server updates the local caches via this listener. Each server asings a unique listener id for a listener.

One listener is used per remote cache server. The same listener is used for all the regions that talk to a particular server.

See Also:
Serialized Form

Field Summary
protected  ICompositeCacheManager cacheMgr
          The cache manager used to put items in differnt regions.
protected  IRemoteCacheAttributes irca
          The remote cache configuration object.
protected  long listenerId
          This is set by the remote cache server.
protected  int puts
          Number of put requests received.
protected  int removes
          Number of remove requests received.
 
Fields inherited from interface org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheListener
CLIENT_LISTENER, SERVER_LISTENER
 
Fields inherited from interface org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheConstants
REMOTE_ALLOW_CLUSTER_GET, REMOTE_CACHE_SERVICE_NAME, REMOTE_CACHE_SERVICE_PORT, REMOTE_CACHE_SERVICE_VAL, REMOTE_LOCAL_CLUSTER_CONSISTENCY, TOMCAT_ON, TOMCAT_XML
 
Constructor Summary
RemoteCacheListener(IRemoteCacheAttributes irca, ICompositeCacheManager cacheMgr)
          Only need one since it does work for all regions, just reference by multiple region names.
 
Method Summary
protected  void ensureCacheManager()
          Gets the cacheManager attribute of the RemoteCacheListener object.
 long getListenerId()
          Gets the listenerId attribute of the RemoteCacheListener object.
 int getRemoteType()
          Gets the remoteType attribute of the RemoteCacheListener object
 void handleDispose(java.lang.String cacheName)
          Notifies the subscribers for freeing up the named cache.
 void handlePut(ICacheElement cb)
          If this is configured to remove on put, then remove the element since it has been updated elsewhere.
 void handleRemove(java.lang.String cacheName, java.io.Serializable key)
          Notifies the subscribers for a cache entry removal.
 void handleRemoveAll(java.lang.String cacheName)
          Notifies the subscribers for a cache remove-all.
 void setListenerId(long id)
          let the remote cache set a listener_id.
 java.lang.String toString()
          For easier debugging.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

cacheMgr

protected transient ICompositeCacheManager cacheMgr
The cache manager used to put items in differnt regions. This is set lazily and should not be sent to the remote server.


irca

protected IRemoteCacheAttributes irca
The remote cache configuration object.


puts

protected int puts
Number of put requests received. For debugging only.


removes

protected int removes
Number of remove requests received. For debugging only.


listenerId

protected long listenerId
This is set by the remote cache server.

Constructor Detail

RemoteCacheListener

public RemoteCacheListener(IRemoteCacheAttributes irca,
                           ICompositeCacheManager cacheMgr)
Only need one since it does work for all regions, just reference by multiple region names.

The constructor exports this object, making it available to receive incoming calls. The calback port is anonymous unless a local port vlaue was specified in the configurtion.

Parameters:
irca -
cacheMgr -
Method Detail

setListenerId

public void setListenerId(long id)
                   throws java.io.IOException
let the remote cache set a listener_id. Since there is only one listerenr for all the regions and every region gets registered? the id shouldn't be set if it isn't zero. If it is we assume that it is a reconnect.

Specified by:
setListenerId in interface IRemoteCacheListener
Parameters:
id - The new listenerId value
Throws:
java.io.IOException

getListenerId

public long getListenerId()
                   throws java.io.IOException
Gets the listenerId attribute of the RemoteCacheListener object. This is stored int he object. The RemoteCache object contains a reference to the listener and get the id this way.

Specified by:
getListenerId in interface IRemoteCacheListener
Returns:
The listenerId value
Throws:
java.io.IOException

getRemoteType

public int getRemoteType()
                  throws java.io.IOException
Gets the remoteType attribute of the RemoteCacheListener object

Specified by:
getRemoteType in interface IRemoteCacheListener
Returns:
The remoteType value
Throws:
java.io.IOException

handlePut

public void handlePut(ICacheElement cb)
               throws java.io.IOException
If this is configured to remove on put, then remove the element since it has been updated elsewhere. cd should be incomplete for faster transmission. We don't want to pass data only invalidation. The next time it is used the local cache will get the new version from the remote store.

If remove on put is not ocnfigured, then update the item.

Specified by:
handlePut in interface ICacheListener
Parameters:
cb -
Throws:
java.io.IOException

handleRemove

public void handleRemove(java.lang.String cacheName,
                         java.io.Serializable key)
                  throws java.io.IOException
Description copied from interface: ICacheListener
Notifies the subscribers for a cache entry removal.

Specified by:
handleRemove in interface ICacheListener
Parameters:
cacheName -
key -
Throws:
java.io.IOException

handleRemoveAll

public void handleRemoveAll(java.lang.String cacheName)
                     throws java.io.IOException
Description copied from interface: ICacheListener
Notifies the subscribers for a cache remove-all.

Specified by:
handleRemoveAll in interface ICacheListener
Parameters:
cacheName -
Throws:
java.io.IOException

handleDispose

public void handleDispose(java.lang.String cacheName)
                   throws java.io.IOException
Description copied from interface: ICacheListener
Notifies the subscribers for freeing up the named cache.

Specified by:
handleDispose in interface ICacheListener
Parameters:
cacheName -
Throws:
java.io.IOException

ensureCacheManager

protected void ensureCacheManager()
Gets the cacheManager attribute of the RemoteCacheListener object. This is one of the few places that force the cache to be a singleton.


toString

public java.lang.String toString()
For easier debugging.

Returns:
Basic info on this listener.


Copyright © 2002-2007 Apache Software Foundation. All Rights Reserved.