org.apache.jcs.auxiliary.remote
Class RemoteCacheListener

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

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
 void dispose()
          Deregisters itself.
protected  void ensureCacheManager()
          Gets the cacheManager attribute of the RemoteCacheListener object.
 long getListenerId()
          Gets the listenerId attribute of the RemoteCacheListener object.
 java.lang.String getLocalHostAddress()
          This is for debugging.
 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. cd should be incomplete for faster transmission.
 void handleRemove(java.lang.String cacheName, java.io.Serializable key)
          Calls localRemove on the CompositeCache.
 void handleRemoveAll(java.lang.String cacheName)
          Calls localRemoveAll on the CompositeCache.
 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

dispose

public void dispose()
             throws java.io.IOException
Deregisters itself.

Specified by:
dispose in interface IRemoteCacheListener
Throws:
java.io.IOException

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
Specified by:
setListenerId in interface ICacheListener
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
Specified by:
getListenerId in interface ICacheListener
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
Calls localRemove on the CompositeCache.

(non-Javadoc)

Specified by:
handleRemove in interface ICacheListener
Throws:
java.io.IOException
See Also:
ICacheListener.handleRemove(java.lang.String, java.io.Serializable)

handleRemoveAll

public void handleRemoveAll(java.lang.String cacheName)
                     throws java.io.IOException
Calls localRemoveAll on the CompositeCache.

(non-Javadoc)

Specified by:
handleRemoveAll in interface ICacheListener
Throws:
java.io.IOException
See Also:
ICacheListener.handleRemoveAll(java.lang.String)

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
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.


getLocalHostAddress

public java.lang.String getLocalHostAddress()
                                     throws java.io.IOException
This is for debugging. It allows the remote server to log the address of clients.

Specified by:
getLocalHostAddress in interface IRemoteCacheListener
Returns:
the local host address.
Throws:
java.io.IOException

toString

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

Overrides:
toString in class java.lang.Object
Returns:
Basic info on this listener.


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