blob: a2624cb2db93a8c8e3af7fecddc7cf9abeb22cad [file] [log] [blame]
package org.apache.commons.jcs3.auxiliary.remote.server;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Properties;
import org.apache.commons.jcs3.auxiliary.remote.RemoteUtils;
import org.apache.commons.jcs3.auxiliary.remote.server.RemoteCacheServer;
import org.apache.commons.jcs3.log.Log;
import org.apache.commons.jcs3.log.LogManager;
import org.apache.commons.jcs3.utils.net.HostNameUtil;
/**
*Starts the registry and runs the server via the factory.
*<p>
* @author Aaron Smuts
*/
public class RemoteCacheServerStartupUtil
{
/** The logger */
private static final Log log = LogManager.getLog( RemoteCacheServerStartupUtil.class );
/** Registry to use in the test. */
private static final int DEFAULT_REGISTRY_PORT = 1101;
/**
* Starts the registry on port "registry.port"
* <p>
* @param propsFileName
* @return RemoteCacheServer
*/
public static <K, V> RemoteCacheServer<K, V> startServerUsingProperties( String propsFileName )
{
// TODO load from props file or get as init param or get from jndi, or
// all three
int registryPort = DEFAULT_REGISTRY_PORT;
Properties props = null;
try
{
props = RemoteUtils.loadProps(propsFileName);
}
catch (IOException e)
{
log.error( "Problem loading configuration from " + propsFileName, e);
}
if ( props != null )
{
String portS = props.getProperty( "registry.port", String.valueOf( DEFAULT_REGISTRY_PORT ) );
try
{
registryPort = Integer.parseInt( portS );
}
catch ( NumberFormatException e )
{
log.error( "Problem converting port to an int.", e );
}
}
// we will always use the local machine for the registry
try
{
String registryHost = HostNameUtil.getLocalHostAddress();
if ( log.isDebugEnabled() )
{
log.debug( "registryHost = [" + registryHost + "]" );
}
if ( "localhost".equals( registryHost ) || "127.0.0.1".equals( registryHost ) )
{
log.warn( "The local address [" + registryHost
+ "] is INVALID. Other machines must be able to use the address to reach this server." );
}
try
{
RemoteCacheServerFactory.startup( registryHost, registryPort, props );
}
catch ( IOException e )
{
log.error( "Problem starting remote cache server.", e );
}
}
catch ( UnknownHostException e )
{
log.error( "Could not get local address to use for the registry!", e );
}
return RemoteCacheServerFactory.getRemoteCacheServer();
}
}