如何使用批处理文件在Windows中启动Glassfish服务器,该文件将在域启动之前暂停执行?

时间:2013-11-02 22:17:32

标签: java windows service glassfish

此时我正在使用以下命令作为我的批处理脚本的一部分来启动domain1:

  

asadmin start-domain domain1

但是我最近安装了domain1作为服务,所以现在当我使用这个命令时,域是在我的用户进程下启动而不是作为服务启动。因此,在我注销后,域名就消失了。我用过:

  

net start domain1

  

sc start domain1

然而,一旦信号[或其他任何]被发送到服务,它们似乎都会返回,并且它们不会等待直到实际启动domain1。 “asadmin start-domain”确实在启动域后返回...

我必须等待在我的脚本中我在域启动后不久就取消部署/部署新应用程序。那么有没有办法使用批处理命令启动Glassfish作为服务并等待直到它被启动?

4 个答案:

答案 0 :(得分:0)

安装:

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

答案 1 :(得分:0)

我正在使用的解决方案之一:

@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
)

答案 2 :(得分:0)

为了更好地理解,我修改了上面的版本:

    @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都可以这样配置。

GUI: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

答案 3 :(得分:0)

在记事本中键入以下代码,然后保存[name] .bat(对于Windows)

cd C:\ glassfish3 \ glassfish3 \ bin asadmin起始域 暂停

相关问题