首先我们写一下小程序:
- package com.main;
-
- import org.apache.log4j.Logger;
-
- public class Start {
- private static thread=null;
- private static Logger logger=Logger.getLogger(Start.class);
- /**
- * 退出方法(在批处理文件中要用到这个方法名,这个方法必须有 String [] args)
- * @param args
- */
- public static void systemExit( [] args){
- .out.println("System exit.");
- thread.interrupt();
- logger.info("System exit.");
- }
- /**程序入口
- * @param args
- */
- public static void main([] args) {
- .out.println("Start");
- //为了不让服务自动退出,我们写一个小线程,在这里一直跑着
- thread=new (new Service());
- thread.start();
- logger.info("Thread Start.");
- }
- }
- class Service implements {
- private static Logger logger=Logger.getLogger(Service.class);
- @Override
- public void run() {
- while(true){
- .out.println("running....");
- logger.info("running....");
- try {
- .sleep(10*60*1000);
- } catch ( e) {
- e.printStackTrace();
- }
- }
- }
- }
以下是安装服务的批处理文件内容:
@echo off
rem 可以在这里指定JAVA_HOME,如:set JAVA_HOME="D:\Program Files\Java\jdk1.6.0"
if "%JAVA_HOME%" == "" goto ERROR
rem 设置服务名
set SERVICE_NAME=JavaServices
rem 设置启动类
set STRAT_CLASS=com.main.Start
rem 设置日志路径
set LOG_PATH=%CD%\logs
rem 设置JMX,如果不启用JMX,可以直接设置为 set JMX_SETTING=""
set JMX_SETTING="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
setlocal EnableDelayedExpansion
rem 指定主类的classpath
set CLASSPATH=.;./bin
rem 通过for循环lib目录下的所有jar及zip文件名来组成classpath
for /F %%a in ('dir lib\*.jar lib\*.zip /b') do set CLASSPATH=!CLASSPATH!;lib\%%a
echo "JAVA_HOME:%JAVA_HOME%"
echo "服务名:%SERVICE_NAME%"
echo "CLASSPATH:%CLASSPATH%"
echo "日志路径:%LOG_PATH%"
rem 停止服务
net stop %SERVICE_NAME%
rem 卸载服务
JavaServices.exe -uninstall %SERVICE_NAME%
@pause
rem 如果日志的路径不存在,则创建日志
if not exist "%LOG_PATH%" mkdir "%LOG_PATH%"
rem 安装服务
JavaServices.exe -install %SERVICE_NAME% "%JAVA_HOME%\jre\bin\server\jvm.dll" "%JMX_SETTING%" -Dserver -Xms256m -Xmx512m -XX:SurvivorRatio=4 -XX:+UseParallelGC -Djava.class.path=%CLASSPATH% -start %STRAT_CLASS% -method
main
-params service -stop %STRAT_CLASS% -method
systemExit
-out "%LOG_PATH%\out.log" -err "%LOG_PATH%\err.log" -current "%CD%" -auto
rem 启动服务
net start %SERVICE_NAME%
@pause
goto END
:ERROR
echo "系统中没有设置JAVA_HOME,请在环境变量中设置JAVA_HOME或者在这个文件的开头部份设置......................"
goto END
:END
以下是完整的例子:
阅读(1920) | 评论(0) | 转发(0) |