четверг, 16 апреля 2015 г.

Запуск СП АЦК-ГЗ с предпроверкой статуса Firebird

Интересная задача попалась:
при запуске Windows-сервера с автоматическим запуском СП АЦК-Госзаказ периодически СП завершается с ошибкой:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host "localhost"., error code: HY000
Reason: Unable to complete network request to host "localhost".
Данная ошибка возникает из-за того, что СП пытается запустится в тот момент, когда служба Firebird еще не успела запустится.

Решение: перед запуском СП проверяем состояние службы Firebird, если не запущена, то запускаем, затем стартуем СП.
BAT-вариант:

@ECHO OFF
REM Inspired by http://forum.oszone.net/nextoldesttothread-273062.html

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET daAzkPath=C:\home\soft\azk-gz-lic\1.26.0.180\
SET daAzkFile=StartServer.bat
SET daSvcName=FirebirdServerFB21
:begin
FOR /f "usebackq" %%i IN (`wmic Service where "Name='%daSvcName%'" get State /value 2^>nul ^| find /i "State"`) DO SET b%%~i
IF NOT DEFINED bState echo %daSvcName% not found &GOTO end
IF NOT %bState% == Running (SC START %daSvcName% &GOTO begin)
CD %daAzkPath%
CALL %daAzkFile%
:end
ENDLOCAL

Комментариев нет:

Архив