This article uses the Java Service Wrapper tool to register Java Apps to the Window Service list. This article only records how to fulfill this requirement, I have not introduced the knowledge used in this section in detail. If you are interested, please go to the Internet to find relevant information. 1. Create install-agent-service.bat and uninstall-agent-service.bat script install-agent-service.bat under the bin directory [vb] @ echo off setlocal rem Copyright (c) 1999,200 6 Tanuki Software Inc. rem Java Service Wrapper general NT service install script rem if "% OS %" = "Windows_NT" goto nt echo This script only works with NT-based versions of Windows. goto: eof: nt rem Find the application home. rem % ~ Dp0 is location of current script under NT set _ REALPATH = % ~ Dp0 rem Decide on the wrapper binary. set _ WRAPPER_BASE = wrapper set already if exist "% _ WRAPPER_EXE %" goto conf set already if exist "% _ WRAPPER_EXE %" goto conf set already if exist "% _ WRAPPER_EXE %" goto conf echo Unable to locate a Wrapper executable using any The following names: echo response _realpath1_1__wrapper_base0000.exe pause goto: eof rem Find the wrapper. conf rem: conf set _ WRAPPER_CONF = "% ~ F1 "if not % _ WRAPPER_CONF % =" "goto startup set _ WRAPPER_CONF =" % _ REALPATH % .. \ conf \ wrapper. conf "echo _ WRAPPER_CONF rem Install the Wrapper as an NT service. rem: startup echo "% _ WRAPPER_EXE %"-I % _ WRAPPER_CONF % "% _ WRAPPER_EXE %"-I % _ WRAPPER_CONF % if not errorlevel 1 goto: eof pause @ echo offsetlocal rem Copyright (c) 1999,200 6 Tanuki Software Inc. remrem Java Service Wrapper general NT service Install scriptrem if "% OS %" = "Windows_NT" goto ntecho This script only works with NT-based versions of Windows. goto: eof: ntremrem Find the application home. remrem % ~ Dp0 is location of current script under NTset _ REALPATH = % ~ Dp0 rem Decide on the wrapper binary. set _ WRAPPER_BASE = wrapperset partition if exist "% _ WRAPPER_EXE %" goto confset partition if exist "% _ percent %" goto confset partition if exist "% _ WRAPPER_EXE %" goto confecho Unable locate a Wrapper executable using any of the fol Lowing names: echo processing _realpath%%_wrapper_base0000.exe pausegoto: eof remrem Find the wrapper. confrem: confset _ WRAPPER_CONF = "% ~ F1 "if not % _ WRAPPER_CONF % =" "goto startupset _ WRAPPER_CONF =" % _ REALPATH % .. \ conf \ wrapper. conf "echo _ WRAPPER_CONFremrem Install the Wrapper as an NT service. rem: startupecho "% _ WRAPPER_EXE %"-I % _ WRAPPER_CONF % "% _ WRAPPER_EXE %"-I % _ WRAPPER_CONF % if not errorlevel 1 goto: eofpause uninstall-agent-service.ba [javascript] @ echo off setlocal rem Copyright (c) 1999,200 6 Tanuki Software Inc. rem Java Se Rvice Wrapper general NT service uninstall script rem if "% OS %" = "Windows_NT" goto nt echo This script only works with NT-based versions of Windows. goto: eof: nt rem Find the application home. rem % ~ Dp0 is location of current script under NT set _ REALPATH = % ~ Dp0 rem Decide on the wrapper binary. set _ WRAPPER_BASE = wrapper set already if exist "% _ WRAPPER_EXE %" goto conf set already if exist "% _ WRAPPER_EXE %" goto conf set already if exist "% _ WRAPPER_EXE %" goto conf echo Unable to locate a Wrapper executable using any The following names: echo response _realpath1_1__wrapper_base0000.exe pause goto: eof rem Find the wrapper. conf rem: conf set _ WRAPPER_CONF = "% ~ F1 "if not % _ WRAPPER_CONF % =" "goto startup set _ WRAPPER_CONF =" % _ REALPATH % .. \ conf \ wrapper. conf "rem Uninstall the Wrapper as an NT service. rem: startup "% _ WRAPPER_EXE %"-r % _ WRAPPER_CONF % if not errorlevel 1 goto: eof pause @ echo offsetlocal rem Copyright (c) 1999,200 6 Tanuki Software Inc. remrem Java Service Wrapper general NT service uninstall scriptrem if "% OS %" = "Windows_NT" goto ntecho Th Is script only works with NT-based versions of Windows. goto: eof: ntremrem Find the application home. remrem % ~ Dp0 is location of current script under NT set _ REALPATH = % ~ Dp0 rem Decide on the wrapper binary. set _ WRAPPER_BASE = wrapperset partition if exist "% _ WRAPPER_EXE %" goto confset partition if exist "% _ percent %" goto confset partition if exist "% _ WRAPPER_EXE %" goto confecho Unable locate a Wrapper executable using any of the fol Lowing names: echo processing _realpath%%_wrapper_base0000.exe pausegoto: eof remrem Find the wrapper. confrem: confset _ WRAPPER_CONF = "% ~ F1 "if not % _ WRAPPER_CONF % =" "goto startupset _ WRAPPER_CONF =" % _ REALPATH % .. \ conf \ wrapper. conf "remrem Uninstall the Wrapper as an NT service. rem: startup "% _ WRAPPER_EXE %"-r % _ WRAPPER_CONF % if not errorlevel 1 goto: eofpause 2. Create the conf file and write wrapper. conf file, set the variable in this file [html] view plaincopyprint? # ---------------------------------------------------------------------- # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. see the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except T in compliance with # the License. you may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "as is" BASIS, # without warranties or conditions of any kind, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # region #------------------------------------------------------------------------#************************************* * ***************************** # Wrapper Properties #***** **************************************** * ********************** # wrapper. lang. folder = .. /lang set. AGENT_HOME = E: \ InforGuard-AGENT set. CLASSPATH = % LOCAL_CLASSPATH %; % AGENT_HOME % \ lib set. JAVA_HOME = % AGENT_HOME % \ jre1.6 # Java Application wrapper. working. dir = % AGENT_HOME % wrapper. java. command = % JAVA_HOME % \ bin \ java # wrapper. java. mainclass = org. trustie. loong. wrapper. main wrapper. java. mainclass = org. tanukisoftware. wrapper. wrapperSimpleApp wrapper. java. classpath.1 = % AGENT_HOME %/lib/wrapper. jar wrapper. java. classpath.2 = % AGENT_HOME %/lib/log4j-1.2.14.jar wrapper. java. classpath.3 = % AGENT_HOME %/lib/adapter-os-linux-kylin.jar wrapper. java. classpath.4 = % AGENT_HOME %/lib/agent. jar wrapper. java. classpath.5 = % AGENT_HOME %/lib/dom4j-1.6.1.jar wrapper. java. classpath.6 = % AGENT_HOME %/lib/snmp4j-1.11.jar wrapper. java. classpath.7 = % AGENT_HOME %/lib/env/STAR. jar wrapper. java. library. path.1 = % AGENT_HOME %/lib/# Application Parameters. add parameters as needed starting from 1 wrapper. app. parameter.1 = com. cvicse. inforguard. utmp. collection. agent. agentServer # JVM Parameters # note that n is the parameter number starting from 1. # wrapper. java. additional.1 =-Dutmp. home = "% UTMP_HOME %" wrapper. java. additional.2 =-server-Xms64m-Xmx512m-XX: PermSize = 64 M-XX: MaxNewSize = 256 m # wrapper. java. additional.3 =-Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005 # wrapper. java. additional.4 =-Dcom. sun. management. jmxremote # Uncomment to enable YourKit profiling # wrapper. java. additional. n =-Xrunyjpagent # Uncomment to enable remote debugging # wrapper. java. additional. n =-Xdebug-Xnoagent-Djava. compiler = NONE # wrapper. java. additional. n =-Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005 # Initial Java Heap Size (in MB) wrapper. java. initmemory = 64 # Maximum Java Heap Size (in MB) wrapper. java. maxmemory = 512 #************************************ * ******************************* # Wrapper Logging Properties #*** **************************************** * *********************** # Format of output for the console. (See docs for formats) wrapper. console. format = PM # Log Level for console output. (See docs for log levels) wrapper. console. loglevel = INFO # Log file to use for wrapper output logging. wrapper. logfile = % AGENT_HOME %/logs/wrapper. log # Format of output for the log file. (See docs for formats) wrapper. logfile. format = LPTM # Log Level for log file output. (See docs for log levels) wrapper. logfile. loglevel = INFO # Maximum size that the log file will be allowed to grow to before # the log is rolled. size is specified in bytes. the default value # of 0, disables log rolling. may abbreviate with the 'K' (kb) or # 'M' (mb) suffix. for example: 10 m = 10 megabytes. wrapper. logfile. maxsize = 10 m # Maximum number of rolled log files which will be allowed before old # files are deleted. the default value of 0 implies no limit. wrapper. logfile. maxfiles = 5 # Log Level for sys/event log output. (See docs for log levels) wrapper. syslog. loglevel = NONE #************************************ * ****************************** # Wrapper Windows Properties #*** **************************************** * *********************** # Title to use when running as a console wrapper. console. title = InforGuard AGENT #*********************************** * ******************************* # Wrapper Windows NT/2000/ XP Service Properties #************************************ * ****************************** # WARNING-Do not modify any these properties when an application # using this configuration file has been installed as a service. # Please uninstall the service before modifying this section. the # service can be reinstalled. # Name of the service wrapper. ntservice. name = InforGuard AGENT # Display name of the service wrapper. ntservice. displayname = InforGuard AGENT Application # Description of the service wrapper. ntservice. description = InforGuard AGENT # Service dependencies. add dependencies as needed starting from 1 wrapper. ntservice. dependency.1 = # Mode in which the service is installed. AUTO_START or DEMAND_START wrapper. ntservice. starttype = AUTO_START # Allow the service to interact with the desktop. wrapper. ntservice. interactive = false wrapper. ping. timeout = 30 # ---------------------------------------------------------------------- # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. see the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except T in compliance with # the License. you may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "as is" BASIS, # without warranties or conditions of any kind, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # region #------------------------------------------------------------------------#************************************* * ***************************** # Wrapper Properties #***** **************************************** * ********************** # wrapper. lang. folder = .. /lang set. AGENT_HOME = E: \ InforGuard-AGENTset.CLASSPATH = % LOCAL_CLASSPATH %; % AGENT_HOME % \ libset. JAVA_HOME = % AGENT_HOME % \ jre1.6 # Java Applicationwrapper. working. dir = % AGENT_HOME % wrapper. java. command = % JAVA_HOME % \ bin \ java # wrapper. java. mainclass = org. trustie. loong. wrapper. mainwrapper. java. mainclass = org. tanukisoftware. wrapper. wrapperSimpleApp wrapper. java. classpath.1 = % AGENT_HOME %/lib/wrapper. jarwrapper. java. classpath.2 = % AGENT_HOME %/lib/log4j-1.2.14.jarwrapper.java.classpath.3 = % AGENT_HOME %/lib/adapter-os-linux-kylin.jarwrapper.java.classpath.4 = % AGENT_HOME %/lib/agent. jarwrapper. java. classpath.5 = % AGENT_HOME %/lib/dom4j-1.6.1.jarwrapper.java.classpath.6 = % AGENT_HOME %/lib/snmp4j-1.11.jarwrapper.java.classpath.7 = % AGENT_HOME %/lib/env/STAR. jar wrapper. java. library. path.1 = % AGENT_HOME %/lib/# Application Parameters. add parameters as needed starting from 1wrapper. app. parameter.1 = com. cvicse. inforguard. utmp. collection. agent. agentServer # JVM Parameters # note that n is the parameter number starting from 1. # wrapper. java. additional.1 =-Dutmp. home = "% UTMP_HOME %" wrapper. java. additional.2 =-server-Xms64m-Xmx512m-XX: PermSize = 64 M-XX: MaxNewSize = 256 m # wrapper. java. additional.3 =-Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005 # wrapper. java. additional.4 =-Dcom. sun. management. jmxremote # Uncomment to enable YourKit profiling # wrapper. java. additional. n =-Xrunyjpagent # Uncomment to enable remote debugging # wrapper. java. additional. n =-Xdebug-Xnoagent-Djava. compiler = NONE # wrapper. java. additional. n =-Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005 # Initial Java Heap Size (in MB) wrapper. java. initmemory = 64 # Maximum Java Heap Size (in MB) wrapper. java. maxmemory = 512 #************************************ * ******************************* # Wrapper Logging Properties #*** **************************************** * *********************** # Format of output for the console. (See docs for formats) wrapper. console. format = PM # Log Level for console output. (See docs for log levels) wrapper. console. loglevel = INFO # Log file to use for wrapper output logging. wrapper. logfile = % AGENT_HOME %/logs/wrapper. log # Format of output for the log file. (See docs for formats) wrapper. logfile. format = LPTM # Log Level for log file output. (See docs for log levels) wrapper. logfile. loglevel = INFO # Maximum size that the log file will be allowed to grow to before # the log is rolled. size is specified in bytes. the default value # of 0, disables log rolling. may abbreviate with the 'K' (kb) or # 'M' (mb) suffix. for example: 10 m = 10 megabytes. wrapper. logfile. maxsize = 10 m # Maximum number of rolled log files which will be allowed before old # files are deleted. the default value of 0 implies no limit. wrapper. logfile. maxfiles = 5 # Log Level for sys/event log output. (See docs for log levels) wrapper. syslog. loglevel = NONE #************************************ * ****************************** # Wrapper Windows Properties #*** **************************************** * *********************** # Title to use when running as a consolewrapper. console. title = InforGuard AGENT #*********************************** * ******************************* # Wrapper Windows NT/2000/ XP Service Properties #************************************ * ****************************** # WARNING-Do not modify any these properties when an application # using this configuration file has been installed as a service. # Please uninstall the service before modifying this section. the # service can be reinstalled. # Name of the servicewrapper. ntservice. name = InforGuard AGENT # Display name of the servicewrapper. ntservice. displayname = InforGuard AGENT Application # Description of the servicewrapper. ntservice. description = InforGuard AGENT # Service dependencies. add dependencies as needed starting from 1wrapper. ntservice. dependency.1 = # Mode in which the service is installed. AUTO_START or DEMAND_STARTwrapper.ntservice.starttype = AUTO_START # Allow the service to interact with the desktop. wrapper. ntservice. interactive = false wrapper. ping. timeout = 30 3. Copy the jre1.6 runtime environment to the root directory 4. Copy wrapper. jar and wrapper-window-x86-32.dll to the lib directory