from http://hi.baidu.com/zhlovee/item/5c00b44c3527550dc11613bf
windows下:
写一个java文件导成jar包:
package com.helloservice.demo;
public class HelloService {
private static boolean stop = false;
public static void start(String[] args) {
System.out.println("start");
while (!stop) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println("running");
}
}
public static void stop(String[] args) {
System.out.println("stop");
stop = true;
}
public static void main(String[] args) {
if ("start".equals(args[0])) {
start(args);
} else if ("stop".equals(args[0])) {
stop(args);
}
}
}
两种方式:实现Deamon接口或者是实现stop和start方法
写一个installService.bat批处理文件:
set SERVICE_NAME=HelloService
set PR_INSTALL=E:\MyEclipse9.0\OpenSource\commons-deamon\prunsrv.exe
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=c:\logs
set PR_STDOUTPUT=c:\logs\stdout.txt
set PR_STDERROR=c:\logs\stderr.txt
set PR_LOGLEVEL=Error
REM Path to java installation
set PR_JVM=C:\Program Files\Java\jre7\bin\client\jvm.dll
set PR_CLASSPATH=C:\HelloService.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=com.helloservice.demo.HelloService
set PR_STARTMETHOD=start
REM Shutdown configuration
set PR_STOPMODE=jvm
set PR_STOPCLASS=com.helloservice.demo.HelloService
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=256
set PR_JVMMX=1024
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.language=DE;-Duser.region=de
REM Install service
%PR_INSTALL% //IS//%SERVICE_NAME%
运行后会看到我的电脑/服务管理 里面会增加了一个HelloService的服务
使用下载的commons-daemon-1.0.10-bin-windows.zip,
命令行运行prunsrv //ST//HelloService 会看到
running
running
running
running
ctrl+c退出
Linux下(转):
在linux上以服务的方式启动java程序
1.安装jsvc
在tomcat的bin目录下有一个jsvc.tar.gz的文件,进入tomcat的bin目录下
#tar xvfz jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh
#chmod 755 configure
#./configure --with-java=/usr/local/java (改成你的JDK的位置)
#make
2.编写服务启动类
package com.sohu.jsvc.test;
public class TestJsvc {
public static void main(String args[]) {
System.out.println("execute main method!");
}
public void init() throws Exception {
System.out.println("execute init method!");
}
public void init(String[] args) throws Exception{
System.out.println("execute init(args) method");
}
public void start() throws Exception {
System.out.println("execute start method!");
}
public void stop() throws Exception {
System.out.println("execute stop method!");
}
public void destroy() throws Exception{
System.out.println("execute destroy method!");
}
}
main方法可以去掉,但是init(String[] args),start(),stop(),destroy()方法不能少,服务在启动时会先调用init(String[] args)方法
然后调用start()方法,在服务停止是会首先调用stop()方法,然后调用destroy() 方法.
3.把这个类打包成testjsvc.jar 放到/test目录下
4.编写启动服务的脚本 myjsvc
#!/bin/sh
# myjsvc This shell script takes care of starting and stopping
#
# chkconfig: - 60 50
# description: tlstat stat is a stat data daemon.
# processname: myjsvc
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
prog="MYJSVC"
# jdk的安装目录
JAVA_HOME=/usr/java/jdk1.5.0_15
#应用程序的目录
MYJSVC_HOME=/test
#jsvc所在的目录
DAEMON_HOME=/usr/local/tomcat5/bin/jsvc-src
#用户
MYJSVC_USER=root
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tlstat.pid
#程序运行是所需的jar包,commons-daemon.jar是不能少的
CLASSPATH=
/test/testjsvc.jar:
/usr/local/tomcat5/bin/commons-daemon.jar:
case "$1" in
start)
#
# Start TlStat Data Serivce
#
$DAEMON_HOME/jsvc
-user $MYJSVC_USER
-home $JAVA_HOME
-Djava.io.tmpdir=$TMP_DIR
-wait 10
-pidfile $PID_FILE
#控制台的输出会写到tlstat.out文件里
-outfile $MYJSVC_HOME/log/myjsvc.out
-errfile '&1'
-cp $CLASSPATH
#服务启动类
com.sohu.jsvc.test.TestJsvc
#
# To get a verbose JVM
#-verbose
# To get a debug of jsvc.
#-debug
exit $?
;;
stop)
#
# Stop TlStat Data Serivce
#
$DAEMON_HOME/jsvc
-stop
-pidfile $PID_FILE
com.sohu.jsvc.test.TestJsvc
exit $?
;;
*)
echo "Usage myjsvc start/stop"
exit 1;;
esac
5. 把myjsvc文件拷贝到/etc/init.d/目录下
6. #chmod -c 777 /etc/init.d/myjsvc
7. 添加服务
#chkconfig --add myjsvc
#chkconfig --level 345 myjsvc on
8. 完成,启动服务
#service myjsvc start
你可以从/test/log/myjsvc.out文件里看到如下信息:
execute init(args) method
execute start method
#service myjsvc stop
你会发现/test/log/myjsvc.out文件里会增加如下信息
execute stop method
execute destroy method
并且在系统重启时会自动启动myjsvc服务
好了,一个简单的 liunx服务就写好了,你可以在TestJsvc的init(),start(),stop(),destroy()方法里添加你的业务,做你想做的事。
-------------------------------------------------------------
package com.helloservice.demo;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class HelloService {
private static boolean stop = false;
public static void start(String[] args) {
System.out.println("start");
while (!stop) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
JSONObject json = new JSONObject();
try {
json.put("id", 1234);
json.put("name", "diaosi");
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(json.toString());
}
}
public static void stop(String[] args) {
System.out.println("stop");
stop = true;
}
}
windows下:
写一个java文件导成jar包:
package com.helloservice.demo;
public class HelloService {
private static boolean stop = false;
public static void start(String[] args) {
System.out.println("start");
while (!stop) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println("running");
}
}
public static void stop(String[] args) {
System.out.println("stop");
stop = true;
}
public static void main(String[] args) {
if ("start".equals(args[0])) {
start(args);
} else if ("stop".equals(args[0])) {
stop(args);
}
}
}
两种方式:实现Deamon接口或者是实现stop和start方法
写一个installService.bat批处理文件:
set SERVICE_NAME=HelloService
set PR_INSTALL=E:\MyEclipse9.0\OpenSource\commons-deamon\prunsrv.exe
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=c:\logs
set PR_STDOUTPUT=c:\logs\stdout.txt
set PR_STDERROR=c:\logs\stderr.txt
set PR_LOGLEVEL=Error
REM Path to java installation
set PR_JVM=C:\Program Files\Java\jre7\bin\client\jvm.dll
set PR_CLASSPATH=C:\HelloService.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=com.helloservice.demo.HelloService
set PR_STARTMETHOD=start
REM Shutdown configuration
set PR_STOPMODE=jvm
set PR_STOPCLASS=com.helloservice.demo.HelloService
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=256
set PR_JVMMX=1024
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.language=DE;-Duser.region=de
REM Install service
%PR_INSTALL% //IS//%SERVICE_NAME%
运行后会看到我的电脑/服务管理 里面会增加了一个HelloService的服务
使用下载的commons-daemon-1.0.10-bin-windows.zip,
命令行运行prunsrv //ST//HelloService 会看到
running
running
running
running
ctrl+c退出
Linux下(转):
在linux上以服务的方式启动java程序
1.安装jsvc
在tomcat的bin目录下有一个jsvc.tar.gz的文件,进入tomcat的bin目录下
#tar xvfz jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh
#chmod 755 configure
#./configure --with-java=/usr/local/java (改成你的JDK的位置)
#make
2.编写服务启动类
package com.sohu.jsvc.test;
public class TestJsvc {
public static void main(String args[]) {
System.out.println("execute main method!");
}
public void init() throws Exception {
System.out.println("execute init method!");
}
public void init(String[] args) throws Exception{
System.out.println("execute init(args) method");
}
public void start() throws Exception {
System.out.println("execute start method!");
}
public void stop() throws Exception {
System.out.println("execute stop method!");
}
public void destroy() throws Exception{
System.out.println("execute destroy method!");
}
}
main方法可以去掉,但是init(String[] args),start(),stop(),destroy()方法不能少,服务在启动时会先调用init(String[] args)方法
然后调用start()方法,在服务停止是会首先调用stop()方法,然后调用destroy() 方法.
3.把这个类打包成testjsvc.jar 放到/test目录下
4.编写启动服务的脚本 myjsvc
#!/bin/sh
# myjsvc This shell script takes care of starting and stopping
#
# chkconfig: - 60 50
# description: tlstat stat is a stat data daemon.
# processname: myjsvc
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
prog="MYJSVC"
# jdk的安装目录
JAVA_HOME=/usr/java/jdk1.5.0_15
#应用程序的目录
MYJSVC_HOME=/test
#jsvc所在的目录
DAEMON_HOME=/usr/local/tomcat5/bin/jsvc-src
#用户
MYJSVC_USER=root
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tlstat.pid
#程序运行是所需的jar包,commons-daemon.jar是不能少的
CLASSPATH=
/test/testjsvc.jar:
/usr/local/tomcat5/bin/commons-daemon.jar:
case "$1" in
start)
#
# Start TlStat Data Serivce
#
$DAEMON_HOME/jsvc
-user $MYJSVC_USER
-home $JAVA_HOME
-Djava.io.tmpdir=$TMP_DIR
-wait 10
-pidfile $PID_FILE
#控制台的输出会写到tlstat.out文件里
-outfile $MYJSVC_HOME/log/myjsvc.out
-errfile '&1'
-cp $CLASSPATH
#服务启动类
com.sohu.jsvc.test.TestJsvc
#
# To get a verbose JVM
#-verbose
# To get a debug of jsvc.
#-debug
exit $?
;;
stop)
#
# Stop TlStat Data Serivce
#
$DAEMON_HOME/jsvc
-stop
-pidfile $PID_FILE
com.sohu.jsvc.test.TestJsvc
exit $?
;;
*)
echo "Usage myjsvc start/stop"
exit 1;;
esac
5. 把myjsvc文件拷贝到/etc/init.d/目录下
6. #chmod -c 777 /etc/init.d/myjsvc
7. 添加服务
#chkconfig --add myjsvc
#chkconfig --level 345 myjsvc on
8. 完成,启动服务
#service myjsvc start
你可以从/test/log/myjsvc.out文件里看到如下信息:
execute init(args) method
execute start method
#service myjsvc stop
你会发现/test/log/myjsvc.out文件里会增加如下信息
execute stop method
execute destroy method
并且在系统重启时会自动启动myjsvc服务
好了,一个简单的 liunx服务就写好了,你可以在TestJsvc的init(),start(),stop(),destroy()方法里添加你的业务,做你想做的事。
-------------------------------------------------------------
package com.helloservice.demo;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class HelloService {
private static boolean stop = false;
public static void start(String[] args) {
System.out.println("start");
while (!stop) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
JSONObject json = new JSONObject();
try {
json.put("id", 1234);
json.put("name", "diaosi");
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(json.toString());
}
}
public static void stop(String[] args) {
System.out.println("stop");
stop = true;
}
}