Chinaunix首页 | 论坛 | 博客
  • 博客访问: 272920
  • 博文数量: 53
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 496
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-06 11:05
文章分类

全部博文(53)

文章存档

2011年(1)

2008年(52)

我的朋友

分类: WINDOWS

2008-04-03 18:33:07

首先我们写一下小程序:
  1. package com.main;
  2. import org.apache.log4j.Logger;
  3. public class Start {
  4.     private static  thread=null;
  5.     private static Logger logger=Logger.getLogger(Start.class);
  6.     /**
  7.      * 退出方法(在批处理文件中要用到这个方法名,这个方法必须有 String [] args)
  8.      * @param args
  9.      */
  10.     public static void systemExit( [] args){
  11.         .out.println("System exit.");
  12.         thread.interrupt();
  13.         logger.info("System exit.");
  14.     }
  15.     /**程序入口
  16.      * @param args
  17.      */
  18.     public static void main([] args) {
  19.         .out.println("Start");
  20. //为了不让服务自动退出,我们写一个小线程,在这里一直跑着
  21.         thread=new (new Service());
  22.         thread.start();
  23.         logger.info("Thread Start.");
  24.     }
  25. }
  26. class Service implements {
  27.     private static Logger logger=Logger.getLogger(Service.class);
  28.     @Override
  29.     public void run() {
  30.         while(true){
  31.             .out.println("running....");
  32.             logger.info("running....");
  33.             try {
  34.                 .sleep(10*60*1000);
  35.             } catch ( e) {
  36.                 e.printStackTrace();
  37.             }
  38.         }            
  39.     }        
  40. }


以下是安装服务的批处理文件内容:

@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

以下是完整的例子:
 
阅读(1844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~