本文采用Java Service Wrapper工具进行把Java Apps注册到Window的服务列表中,这篇文章只是记录下来如何进行完成这个需求的,对其中用到的知识并没有详细的介绍,如有兴趣请大家到网上查找相关资料。
Java Service Wrapper官网:http://wrapper.tanukisoftware.com/doc/english/download.jsp
1、在bin目录下建立install-agent-service.bat和uninstall-agent-service.bat脚本
install-agent-service.bat
@echo off setlocal rem Copyright (c) 1999, 2006 Tanuki Software Inc. rem 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 rem Find the application home. rem rem %~dp0 is location of current script under NT set _REALPATH=%~dp0 rem Decide on the wrapper binary. set _WRAPPER_BASE=wrapper set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe if exist "%_WRAPPER_EXE%" goto conf set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe if exist "%_WRAPPER_EXE%" goto conf set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe if exist "%_WRAPPER_EXE%" goto conf echo Unable to locate a Wrapper executable using any of the following names: echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe echo %_REALPATH%%_WRAPPER_BASE%.exe pause goto :eof rem 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 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 pauseuninstall-agent-service.ba
@echo off setlocal rem Copyright (c) 1999, 2006 Tanuki Software Inc. rem rem Java Service 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 rem Find the application home. rem rem %~dp0 is location of current script under NT set _REALPATH=%~dp0 rem Decide on the wrapper binary. set _WRAPPER_BASE=wrapper set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe if exist "%_WRAPPER_EXE%" goto conf set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe if exist "%_WRAPPER_EXE%" goto conf set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe if exist "%_WRAPPER_EXE%" goto conf echo Unable to locate a Wrapper executable using any of the following names: echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe echo %_REALPATH%%_WRAPPER_BASE%.exe pause goto :eof rem 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 rem Uninstall the Wrapper as an NT service. rem :startup "%_WRAPPER_EXE%" -r %_WRAPPER_CONF% if not errorlevel 1 goto :eof pause
# ------------------------------------ # 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 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. # ------------------------------------ #******************************************************************** # 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=64M -XX:MaxNewSize=256m #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: 10m = 10 megabytes. wrapper.logfile.maxsize=10m # 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 of 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 then 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
PS:
bin--------注册脚本以及卸载脚本、wrapper-window-x86-32.exe(32位和64位)
conf------脚本启动用到的变量在wrapper.conf中
lib目录下需要加入Java Service Wrapper工具的jar和dll文件,wrapper.jar、wrapper-windows-