繁体   English   中英

使用install4j的“安装服务”操作

[英]Using “Install Service” action of install4j

我需要将tomcat安装为Windows服务,并在安装过程中启动该服务。

最初,我创建了install.bat和startService.bat文件,并在安装期间使用install4j的“运行可执行文件或批处理文件”操作来执行这些批处理文件。

为此,我必须将批处理文件保留在安装目录中。

因此要求我使用installa4j的“安装服务”和“启动服务”操作,以便在安装位置不需要批处理文件。

我可以在下面添加批处理文件吗?

    @echo off    
    setlocal

    set "DATA_PATH=%~dp0data"   
    set "CATALINA_HOME=%~dp0tomcat"    
    set "CATALINA_BASE=%CATALINA_BASE%"      
    set "JRE_HOME=%~dp0jre"  
    set "EXECUTABLE=%CATALINA_HOME%\bin\sampleService.exe"     
    set SERVICE_NAME=sampleService     
    set DISPLAYNAME=sample Service 

    echo Installing the service '%SERVICE_NAME%'           
    echo Using CATALINA_HOME:  "%CATALINA_HOME%"       
    echo Using CATALINA_BASE:  "%CATALINA_HOME%"     
    echo Using JAVA_HOME: "%JAVA_HOME%"     
    echo Using JRE_HOME: "%JRE_HOME%"     

    set "JVM=%JRE_HOME%\bin\server\jvm.dll"      
    if exist "%JVM%" goto foundJvm          
    set "JVM=%JRE_HOME%\bin\client\jvm.dll"        
    if exist "%JVM%" goto foundJvm          
    set JVM=auto           
    :foundJvm         
    echo Using JVM: "%JVM%"         

    set "CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;
                   %CATALINA_BASE%\bin\tomcat-juli.jar"                       
    if not "%CATALINA_HOME%" == "%CATALINA_BASE%"      
    set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"       
    "%EXECUTABLE%" //IS//%SERVICE_NAME% ^     
--Description "tomcat 8" ^
--DisplayName "%DISPLAYNAME%" ^
--Install "%EXECUTABLE%" ^
--Startup auto ^
--LogPath "%CATALINA_BASE%\logs" ^
--StdOutput auto ^
--StdError auto ^
--Classpath "%CLASSPATH%" ^
--Jvm "%JVM%" ^
--StartMode jvm ^
--StopMode jvm ^
--StartPath "%CATALINA_HOME%" ^
--StopPath "%CATALINA_HOME%" ^
--StartClass org.apache.catalina.startup.Bootstrap ^
--StopClass org.apache.catalina.startup.Bootstrap ^
--StartParams start ^
--StopParams stop ^

--JvmOptions 
"-Dconceptor.datapath=%DATA_PATH%;-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" ^
    --JvmMs 1024 ^
    --JvmMx 2048
    if not errorlevel 1 goto installed
    echo Failed installing '%DISPLAYNAME%' service
    goto end
    :installed
    echo The service '%DISPLAYNAME%' has been installed.

    :end
    cd "%CURRENT_DIR%"
    pause 

您将必须编写这样的Java类:

class MainClass {
    public static void main(String[] args) {
        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                org.apache.catalina.startup.Bootstrap("stop");
            }
        });
        org.apache.catalina.startup.Bootstrap("start");
    }
}

并将其用作install4j中服务启动器的主要类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM