[英]How to start Glassfish service in Windows using batch file that will pause execution untill domain is started?
此時我正在使用下面的命令作為我的批處理腳本的一部分來引導 domain1:
asadmin 起始域 domain1
但是我最近將 domain1 作為服務安裝,所以現在當我使用這個命令時,域是在我的用戶進程下啟動的,而不是作為服務啟動。 所以在我注銷后,域就消失了。 我用了:
凈啟動域1
和
sc 起始域 1
然而,一旦信號[或其他任何東西]被派往服務,這兩個似乎都會返回,並且它們不會等到域1實際啟動。 “asadmin start-domain”在啟動域后確實返回了...
我必須在我的腳本中等待,在域啟動后不久我將取消部署/部署新應用程序。 那么有沒有辦法使用批處理命令將 Glassfish 作為服務啟動並等待它啟動?
安裝:
sc create ServiveName binpath= <PATH_TO_SERVICE>.exe
net start ServiveName
PAUSE
開始:
net start ServiceName
PAUSE
停止:
net stop ServiceName
PAUSE
卸載:
net stop ServiceName
sc delete ServiceName
PAUSE
我正在使用的解決方案之一:
@echo off
SETLOCAL enableextensions enabledelayedexpansion
set GLASSFISH_HOME=c:\glassfish
set DOMAIN=domain1
net start %DOMAIN%
:loop
call timeout /t 1 /NOBREAK > NUL
echo Still waiting for domain to start
for /f "tokens=1,2 delims= " %%A IN ( '"%GLASSFISH_HOME%\bin\asadmin.bat" list-domains' ) DO IF "%%A"=="%DOMAIN%" SET GLASSFISH_RUNNING=%%B
if not "%GLASSFISH_RUNNING%"=="running" (
goto loop
)
為了更好的理解,我稍微修改了上面的版本:
@echo off
SETLOCAL enableextensions enabledelayedexpansion
set GLASSFISH_HOME=D:\glassfish
set DOMAIN=domainName
set SERVICE_NAME="name of your service"
net start %SERVICE_NAME%
:loop
call timeout /t 1 /NOBREAK > NUL
echo Still waiting for domain to start
for /f "tokens=1,2 delims= " %%A IN ( '"%GLASSFISH_HOME%\bin\asadmin.bat" list-domains' ) DO IF "%%A"=="%DOMAIN%" SET GLASSFISH_RUNNING=%%B
if not "%GLASSFISH_RUNNING%"=="running" (
goto loop
)
一些應用程序已經提供了自動創建 Windows 服務的可能性。 但是,每個 .exe 都可以通過這種方式進行配置。
圖形用戶界面: http : //www.sevenforums.com/tutorials/2495-services-start-disable.html
控制台: https : //support.microsoft.com/de-de/kb/137890
登錄前自動啟動: https : //serverfault.com/questions/227862/run-a-program-without-user-being-logged-on
在記事本中輸入以下代碼並保存 [name].bat(對於 Windows)
cd C:\\glassfish3\\glassfish3\\bin asadmin start-domain PAUSE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.