Я ищу хороший способ запустить сервер Apache Derby в сетевом режиме. Я использую NetworkServerControl для запуска сервера, и он отлично работает.
Я запускаю сервер так:
/**
* starts the network server
* @return true if sucessfull
*/
public boolean start()
{
try
{
// just to be sure that we don't start two servers
this.stop();
server = new NetworkServerControl();
server.start( null );
return true;
}
catch ( Exception ex )
{
this.logLogger.debug( ex );
return false;
}
}
И останови это так:
/**
* stops the server
*
* @return true if there were no problems stopping the server
*/
public boolean stop()
{
try
{
if ( server == null )
{
server = new NetworkServerControl();
}
server.shutdown();
return true;
}
catch ( Exception ex )
{
this.logLogger.debug( ex );
return false;
}
}
На main () у меня это так, процесс не умирает, пока сервер работает
(...)
clsDB.start();
while( clsDB.testForConnection() )
{
Thread.sleep( 60000 );
}
testForConnection () выглядит следующим образом:
/**
* Try to test for a connection
*
* @return true if the server is alive
*/
public boolean testForConnection()
{
try
{
server.ping();
return true;
}
catch ( Exception ex )
{
this.logLogger.debug( ex );
return false;
}
}
Моя проблема в том, что при вызове нового хранилища моего JAR старое все равно будет работать (если только мне действительно не повезет, и тест будет выполнен до запуска нового сервера).
Я знаю, что мог бы просто проверить, работает ли сервер, и затем я не запустился бы снова, но я бы хотел начать работать как перезапуск, если сервер уже существует.