2016-06-02 3 views
0

У меня есть требование установить tomcat в качестве службы Windows и запустить службу во время установки.Использование действия «Install Service» для install4j

Первоначально я создал файл install.bat & startService.bat и выполнил эти командные файлы во время установки с помощью действия «запустить исполняемый файл или пакетный файл» install4j.

Для этого мне пришлось сохранить командный файл в каталоге установки.

Поэтому мне было предложено использовать «Install Service» & «start service» действие 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 

ответ

0

Вы должны написать класс 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.