Я ищу хороший способ запуска сервера Apache Derby в сетевом режиме. Я использую NetworkServerControl для запуска сервера, и он отлично работает.Kill Derby DB Network Server на фоне
Я начинаю сервер, как это:
/**
* 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;
}
}
На главной() Я это так что процесс не умирает, а сервер работает
(...)
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 называется старым, он все равно будет работать (если мне действительно не повезет, и тест выполняется до запуска нового сервера).
Я знаю, что я мог бы просто проверить, запущен ли сервер, а затем я не начал бы снова, но я бы хотел начать работать как перезагрузка, если сервер уже существует.
Это не работает с NetworkServerControl. – ferro 2008-11-06 18:54:40