You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2008/09/17 23:53:13 UTC
svn commit: r696472 - in /jakarta/jcs/trunk: ./
src/java/org/apache/jcs/auxiliary/remote/server/
src/test/org/apache/jcs/auxiliary/
src/test/org/apache/jcs/auxiliary/remote/server/ xdocs/
Author: asmuts
Date: Wed Sep 17 14:53:13 2008
New Revision: 696472
URL: http://svn.apache.org/viewvc?rev=696472&view=rev
Log:
Adding a rmi registry monitor and restore daemon.
Added:
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunner.java
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunnerUnitTest.java
Modified:
jakarta/jcs/trunk/pom.xml
jakarta/jcs/trunk/project.xml
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheStartupServlet.java
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockCacheEventLogger.java
jakarta/jcs/trunk/xdocs/changes.xml
Modified: jakarta/jcs/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/pom.xml?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/pom.xml (original)
+++ jakarta/jcs/trunk/pom.xml Wed Sep 17 14:53:13 2008
@@ -36,7 +36,7 @@
<groupId>org.apache.jcs</groupId>
<artifactId>jcs</artifactId>
<packaging>pom</packaging>
- <version>1.3.2.1-RC</version>
+ <version>1.3.2.2-RC</version>
<name>Jakarta JCS</name>
<url>http://jakarta.apache.org/jcs/</url>
<inceptionYear>2002</inceptionYear>
Modified: jakarta/jcs/trunk/project.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/project.xml?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/project.xml (original)
+++ jakarta/jcs/trunk/project.xml Wed Sep 17 14:53:13 2008
@@ -17,7 +17,7 @@
<pomVersion>3</pomVersion>
<name>JCS</name>
<id>jcs</id>
- <currentVersion>1.3.2.1-RC</currentVersion>
+ <currentVersion>1.3.2.2-RC</currentVersion>
<organization>
<name>Apache Software Foundation</name>
<url>http://jakarta.apache.org/</url>
Added: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunner.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunner.java?rev=696472&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunner.java (added)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunner.java Wed Sep 17 14:53:13 2008
@@ -0,0 +1,177 @@
+package org.apache.jcs.auxiliary.remote.server;
+
+import java.rmi.Naming;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.engine.logging.behavior.ICacheEventLogger;
+
+/**
+ * This class tries to keep the resitry alive. If if is able to create a registry, it will also
+ * rebind the remote cache server.
+ */
+public class RegistryKeepAliveRunner
+ implements Runnable
+{
+ /** The logger */
+ private final static Log log = LogFactory.getLog( RegistryKeepAliveRunner.class );
+
+ /** Hostname of the registry */
+ private String registryHost;
+
+ /** the port on which to start the registry */
+ private int registryPort;
+
+ /** The name of the service to look for. */
+ private String serviceName;
+
+ /** An optional event logger */
+ private ICacheEventLogger cacheEventLogger;
+
+ /**
+ * @param registryHost - Hostname of the registry
+ * @param registryPort - the port on which to start the registry
+ * @param serviceName
+ */
+ public RegistryKeepAliveRunner( String registryHost, int registryPort, String serviceName )
+ {
+ this.registryHost = registryHost;
+ this.registryPort = registryPort;
+ this.serviceName = serviceName;
+ }
+
+ /**
+ * Tries to lookup the server. If unsuccessful it will rebind the server using the factory
+ * rebind method.
+ * <p>
+ */
+ public void run()
+ {
+ checkAndRestoreIfNeeded();
+ }
+
+ /**
+ * Tries to lookup the server. If unsuccessful it will rebind the server using the factory
+ * rebind method.
+ */
+ protected void checkAndRestoreIfNeeded()
+ {
+ String registry = "//" + registryHost + ":" + registryPort + "/" + serviceName;
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "looking up server " + registry );
+ }
+ try
+ {
+ Object obj = Naming.lookup( registry );
+
+ // Successful connection to the remote server.
+ String message = "RMI registry looks fine. Found [" + obj + "] in registry [" + registry + "]";
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logApplicationEvent( "RegistryKeepAliveRunner", "Naming.lookup", message );
+ }
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( message );
+ }
+ obj = null;
+ }
+ catch ( Exception ex )
+ {
+ // Failed to connect to the remote server.
+ String message = "Problem finding server at [" + registry
+ + "]. Will attempt to start registry and rebind.";
+ log.error( message, ex );
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logError( "RegistryKeepAliveRunner", "Naming.lookup", message + ":" + ex.getMessage() );
+ }
+ createAndRegister( registry );
+ }
+ }
+
+ /**
+ * Creates the registry and registers the server.
+ * <p>
+ * @param registry
+ */
+ protected void createAndRegister( String registry )
+ {
+ createReqistry( registry );
+
+ registerServer( registry );
+ }
+
+ /**
+ * Try to create the registry. Log errors
+ * <p>
+ * @param registry
+ */
+ protected void createReqistry( String registry )
+ {
+ try
+ {
+ LocateRegistry.createRegistry( registryPort );
+ String message = "Successfully created registry [" + registry + "].";
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logApplicationEvent( "RegistryKeepAliveRunner", "createRegistry", message );
+ }
+ }
+ catch ( RemoteException e )
+ {
+ String message = "Could not start registry [" + registry + "].";
+ log.error( message, e );
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logError( "RegistryKeepAliveRunner", "createRegistry", message + ":" + e.getMessage() );
+ }
+ }
+ }
+
+ /**
+ * Try to rebind the server.
+ * <p>
+ * @param registry
+ */
+ protected void registerServer( String registry )
+ {
+ try
+ {
+ // try to rebind anyway
+ RemoteCacheServerFactory.registerServer( registryHost, registryPort, serviceName );
+ String message = "Successfully rebound server to registry [" + registry + "].";
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logApplicationEvent( "RegistryKeepAliveRunner", "registerServer", message );
+ }
+ if ( log.isInfoEnabled() )
+ {
+ log.info( message );
+ }
+ }
+ catch ( RemoteException e )
+ {
+ String message = "Could not rebind server to registry [" + registry + "].";
+ log.error( message, e );
+ if ( cacheEventLogger != null )
+ {
+ cacheEventLogger.logError( "RegistryKeepAliveRunner", "registerServer", message + ":"
+ + e.getMessage() );
+ }
+ }
+ }
+
+ /**
+ * Allows it to be injected.
+ * <p>
+ * @param cacheEventLogger
+ */
+ public void setCacheEventLogger( ICacheEventLogger cacheEventLogger )
+ {
+ this.cacheEventLogger = cacheEventLogger;
+ }
+}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java Wed Sep 17 14:53:13 2008
@@ -564,7 +564,8 @@
public Map getMultiple( String cacheName, Set keys, long requesterId )
throws IOException
{
- ICacheEvent cacheEvent = createICacheEvent( cacheName, (Serializable) keys, requesterId, ICacheEventLogger.GETMULTIPLE_EVENT );
+ ICacheEvent cacheEvent = createICacheEvent( cacheName, (Serializable) keys, requesterId,
+ ICacheEventLogger.GETMULTIPLE_EVENT );
try
{
return processGetMultiple( cacheName, keys, requesterId );
@@ -1229,8 +1230,8 @@
}
CacheEventQueueFactory fact = new CacheEventQueueFactory();
- ICacheEventQueue q = fact.createCacheEventQueue( listener, id, cacheName, remoteCacheServerAttributes.getEventQueuePoolName(),
- remoteCacheServerAttributes.getEventQueueTypeFactoryCode() );
+ ICacheEventQueue q = fact.createCacheEventQueue( listener, id, cacheName, remoteCacheServerAttributes
+ .getEventQueuePoolName(), remoteCacheServerAttributes.getEventQueueTypeFactoryCode() );
eventQMap.put( new Long( listener.getListenerId() ), q );
@@ -1453,7 +1454,7 @@
* <p>
* @param item
* @param requesterId
- * @param eventName
+ * @param eventName
* @return ICacheEvent
*/
private ICacheEvent createICacheEvent( ICacheElement item, long requesterId, String eventName )
@@ -1473,7 +1474,7 @@
* @param cacheName
* @param key
* @param requesterId
- * @param eventName
+ * @param eventName
* @return ICacheEvent
*/
private ICacheEvent createICacheEvent( String cacheName, Serializable key, long requesterId, String eventName )
@@ -1489,7 +1490,7 @@
/**
* Logs an event if an event logger is configured.
* <p>
- * @param cacheEvent
+ * @param cacheEvent
*/
protected void logICacheEvent( ICacheEvent cacheEvent )
{
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java Wed Sep 17 14:53:13 2008
@@ -72,7 +72,22 @@
/** Connect and read timeout. */
private int rmiSocketFactoryTimeoutMillis = DEFAULT_RMI_SOCKET_FACTORY_TIMEOUT_MS;
-
+
+ /** Should we start the registry */
+ private boolean DEFAULT_START_REGISTRY = true;
+
+ /** Should we start the registry */
+ private boolean startRegistry = DEFAULT_START_REGISTRY;
+
+ /** Should we try to keep the registry alive */
+ private boolean DEFAULT_USE_REGISTRY_KEEP_ALIVE = true;
+
+ /** Should we try to keep the registry alive */
+ private boolean useRegistryKeepAlive = DEFAULT_USE_REGISTRY_KEEP_ALIVE;
+
+ /** The delay between runs */
+ private long registryKeepAliveDelayMillis = 15 * 1000;
+
/** Default constructor for the RemoteCacheAttributes object */
public RemoteCacheServerAttributes()
{
@@ -369,6 +384,62 @@
}
/**
+ * Should we try to keep the registry alive
+ * <p>
+ * @param useRegistryKeepAlive the useRegistryKeepAlive to set
+ */
+ public void setUseRegistryKeepAlive( boolean useRegistryKeepAlive )
+ {
+ this.useRegistryKeepAlive = useRegistryKeepAlive;
+ }
+
+ /**
+ * Should we start the registry
+ * <p>
+ * @param startRegistry the startRegistry to set
+ */
+ public void setStartRegistry( boolean startRegistry )
+ {
+ this.startRegistry = startRegistry;
+ }
+
+ /**
+ * Should we start the registry
+ * <p>
+ * @return the startRegistry
+ */
+ public boolean isStartRegistry()
+ {
+ return startRegistry;
+ }
+
+ /**
+ * Should we try to keep the registry alive
+ * <p>
+ * @return the useRegistryKeepAlive
+ */
+ public boolean isUseRegistryKeepAlive()
+ {
+ return useRegistryKeepAlive;
+ }
+
+ /**
+ * @param registryKeepAliveDelayMillis the registryKeepAliveDelayMillis to set
+ */
+ public void setRegistryKeepAliveDelayMillis( long registryKeepAliveDelayMillis )
+ {
+ this.registryKeepAliveDelayMillis = registryKeepAliveDelayMillis;
+ }
+
+ /**
+ * @return the registryKeepAliveDelayMillis
+ */
+ public long getRegistryKeepAliveDelayMillis()
+ {
+ return registryKeepAliveDelayMillis;
+ }
+
+ /**
* @return String details
*/
public String toString()
@@ -384,6 +455,9 @@
buf.append( "\n localClusterConsistency = [" + this.getLocalClusterConsistency() + "]" );
buf.append( "\n configFileName = [" + this.getConfigFileName() + "]" );
buf.append( "\n rmiSocketFactoryTimeoutMillis = [" + this.getRmiSocketFactoryTimeoutMillis() + "]" );
+ buf.append( "\n startRegistry = [" + this.isStartRegistry() + "]" );
+ buf.append( "\n useRegistryKeepAlive = [" + this.isUseRegistryKeepAlive() + "]" );
+ buf.append( "\n registryKeepAliveDelayMillis = [" + this.getRegistryKeepAliveDelayMillis() + "]" );
return buf.toString();
}
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java Wed Sep 17 14:53:13 2008
@@ -24,6 +24,7 @@
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Properties;
@@ -35,6 +36,9 @@
import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheServiceAdmin;
import org.apache.jcs.engine.logging.behavior.ICacheEventLogger;
+import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
+import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
+
/**
* Provides remote cache services. This creates remote cache servers and can proxy command line
* requests to a running server.
@@ -49,7 +53,10 @@
private static RemoteCacheServer remoteCacheServer;
/** The name of the service. */
- private static String serviceName;
+ private static String serviceName = IRemoteCacheConstants.REMOTE_CACHE_SERVICE_VAL;
+
+ /** Executes the registry keep alive. */
+ private static ClockDaemon keepAliveDaemon;
/** Constructor for the RemoteCacheServerFactory object. */
private RemoteCacheServerFactory()
@@ -113,7 +120,7 @@
log.info( "Creating server with these attributes: " + rcsa );
}
- serviceName = rcsa.getRemoteServiceName();
+ setServiceName( rcsa.getRemoteServiceName() );
RemoteUtils.configureCustomSocketFactory( rcsa.getRmiSocketFactoryTimeoutMillis() );
@@ -125,7 +132,49 @@
remoteCacheServer = new RemoteCacheServer( rcsa );
remoteCacheServer.setCacheEventLogger( cacheEventLogger );
- registerServer( host, port );
+ // START THE REGISTRY
+ startTheRegistry( port, rcsa );
+
+ // REGISTER THE SERVER
+ registerServer( host, port, serviceName );
+
+ // KEEP THE REGISTRY ALIVE
+ if ( rcsa.isUseRegistryKeepAlive() )
+ {
+ if ( keepAliveDaemon == null )
+ {
+ keepAliveDaemon = new ClockDaemon();
+ keepAliveDaemon.setThreadFactory( new MyThreadFactory() );
+ }
+ RegistryKeepAliveRunner runner = new RegistryKeepAliveRunner( host, port, serviceName );
+ runner.setCacheEventLogger( cacheEventLogger );
+ keepAliveDaemon.executePeriodically( rcsa.getRegistryKeepAliveDelayMillis(), runner, false );
+ }
+ }
+ }
+
+ /**
+ * Starts the registry if needed
+ * <p>
+ * @param registryPort
+ * @param rcsa
+ */
+ private static void startTheRegistry( int registryPort, RemoteCacheServerAttributes rcsa )
+ {
+ if ( rcsa.isStartRegistry() )
+ {
+ try
+ {
+ LocateRegistry.createRegistry( registryPort );
+ }
+ catch ( RemoteException e )
+ {
+ log.warn( "Problem creating registry. It may already be started. " + e.getMessage() );
+ }
+ catch ( Throwable t )
+ {
+ log.error( "Problem creating registry.", t );
+ }
}
}
@@ -135,11 +184,19 @@
* <p>
* @param host
* @param port
+ * @param serviceName
* @throws RemoteException
*/
- protected static void registerServer( String host, int port )
+ protected static void registerServer( String host, int port, String serviceName )
throws RemoteException
{
+ if ( remoteCacheServer == null )
+ {
+ String message = "Cannot register the server until it is created. Please start the server first.";
+ log.error( message );
+ throw new RemoteException( message );
+ }
+
if ( log.isInfoEnabled() )
{
log.info( "Binding server to " + host + ":" + port + " with the name " + serviceName );
@@ -252,16 +309,16 @@
{
return;
}
- log.info( "Unbinding host=" + host + ", port=" + port + ", serviceName=" + serviceName );
+ log.info( "Unbinding host=" + host + ", port=" + port + ", serviceName=" + getServiceName() );
try
{
- Naming.unbind( "//" + host + ":" + port + "/" + serviceName );
+ Naming.unbind( "//" + host + ":" + port + "/" + getServiceName() );
}
catch ( MalformedURLException ex )
{
// impossible case.
throw new IllegalArgumentException( ex.getMessage() + "; host=" + host + ", port=" + port
- + ", serviceName=" + serviceName );
+ + ", serviceName=" + getServiceName() );
}
catch ( NotBoundException ex )
{
@@ -382,4 +439,41 @@
RemoteCacheServerFactory.startup( host, port, args.length > 0 ? args[0] : null );
log.debug( "main> done" );
}
+
+ /**
+ * @param serviceName the serviceName to set
+ */
+ protected static void setServiceName( String serviceName )
+ {
+ RemoteCacheServerFactory.serviceName = serviceName;
+ }
+
+ /**
+ * @return the serviceName
+ */
+ protected static String getServiceName()
+ {
+ return serviceName;
+ }
+
+ /**
+ * Allows us to set the daemon status on the clockdaemon
+ */
+ static class MyThreadFactory
+ implements ThreadFactory
+ {
+ /**
+ * @param runner
+ * @return a new thread for the given Runnable
+ */
+ public Thread newThread( Runnable runner )
+ {
+ Thread t = new Thread( runner );
+ String oldName = t.getName();
+ t.setName( "JCS-RemoteCacheServerFactory-" + oldName );
+ t.setDaemon( true );
+ t.setPriority( Thread.MIN_PRIORITY );
+ return t;
+ }
+ }
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheStartupServlet.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheStartupServlet.java?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheStartupServlet.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheStartupServlet.java Wed Sep 17 14:53:13 2008
@@ -70,8 +70,17 @@
/** The default port to start the registry on. */
private static final int DEFAULT_REGISTRY_PORT = 1101;
- /** The default config file name */
- private static final String DEFAULT_PROPS_FILE_NAME = "cache.ccf";
+ /** properties file name */
+ private static final String DEFAULT_PROPS_FILE_NAME = "cache";
+
+ /** properties file Suffix */
+ private static final String DEFAULT_PROPS_FILE_SUFFIX = "ccf";
+
+ /** properties file name, must set prior to calling get instance */
+ private String propsFileName = DEFAULT_PROPS_FILE_NAME;
+
+ /** properties file name, must set prior to calling get instance */
+ private String fullPropsFileName = DEFAULT_PROPS_FILE_NAME + "." + DEFAULT_PROPS_FILE_SUFFIX;
/**
* Starts the registry and then tries to bind to it.
@@ -91,7 +100,7 @@
try
{
- Properties props = PropertyLoader.loadProperties( DEFAULT_PROPS_FILE_NAME );
+ Properties props = PropertyLoader.loadProperties( propsFileName );
if ( props != null )
{
String portS = props.getProperty( "registry.port", String.valueOf( DEFAULT_REGISTRY_PORT ) );
@@ -147,7 +156,11 @@
try
{
- RemoteCacheServerFactory.startup( registryHost, registryPort, "/" + DEFAULT_PROPS_FILE_NAME );
+ RemoteCacheServerFactory.startup( registryHost, registryPort, "/" + fullPropsFileName );
+ if ( log.isInfoEnabled() )
+ {
+ log.info( "Remote JCS Server started with properties from " + fullPropsFileName );
+ }
}
catch ( IOException e )
{
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockCacheEventLogger.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockCacheEventLogger.java?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockCacheEventLogger.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockCacheEventLogger.java Wed Sep 17 14:53:13 2008
@@ -1,6 +1,8 @@
package org.apache.jcs.auxiliary;
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.jcs.engine.behavior.ICacheElement;
import org.apache.jcs.engine.logging.CacheEvent;
@@ -25,6 +27,9 @@
/** times called */
public int errorEventCalls = 0;
+
+ /** list of messages */
+ public List errorMessages = new ArrayList();
/**
* @param source
@@ -52,6 +57,7 @@
public void logError( String source, String eventName, String errorMessage )
{
errorEventCalls++;
+ errorMessages.add( errorMessage );
}
/**
Added: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunnerUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunnerUnitTest.java?rev=696472&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunnerUnitTest.java (added)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/server/RegistryKeepAliveRunnerUnitTest.java Wed Sep 17 14:53:13 2008
@@ -0,0 +1,31 @@
+package org.apache.jcs.auxiliary.remote.server;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.auxiliary.MockCacheEventLogger;
+
+/** Unit tests for the registry keep alive runner. */
+public class RegistryKeepAliveRunnerUnitTest
+ extends TestCase
+{
+ /** Verify that we get the appropriate event log */
+ public void testCheckAndRestoreIfNeeded_failure()
+ {
+ // SETUP
+ String host = "localhost";
+ int port = 1234;
+ String service = "doesn'texist";
+ MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
+
+ RegistryKeepAliveRunner runner = new RegistryKeepAliveRunner( host, port, service );
+ runner.setCacheEventLogger( cacheEventLogger );
+
+ // DO WORK
+ runner.checkAndRestoreIfNeeded();
+
+ // VERIFY
+ // 1 for the lookup, one for the rebind since the server isn't created yet
+ assertEquals( "error tally", 2, cacheEventLogger.errorEventCalls );
+ //System.out.println( cacheEventLogger.errorMessages );
+ }
+}
Modified: jakarta/jcs/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/xdocs/changes.xml?rev=696472&r1=696471&r2=696472&view=diff
==============================================================================
--- jakarta/jcs/trunk/xdocs/changes.xml (original)
+++ jakarta/jcs/trunk/xdocs/changes.xml Wed Sep 17 14:53:13 2008
@@ -21,6 +21,10 @@
<body>
<release version="1.4-dev" date="in SVN">
</release>
+ <release version="1.3.2.2" date="2008-09-17" description="tempbuild">
+ <action dev="asmuts" type="update">Added a registry keep alive and
+ restore option for the remote cache server.</action>
+ </release>
<release version="1.3.2.1" date="2008-09-08" description="tempbuild">
<action dev="asmuts" type="update">Made all disk cache managers
handle custom event loggers.</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org