Java程序作linux服务并且开机自动启动[转]

时间:2021-09-09 05:59:42

以有个java应用名称为test,打包为test.jar,程序入口为cn.com.ppnote.SocketServer。
下面在linux的/opt下建立testapp目录,复制test.jar到/opt/testapp/lib目录下。

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.2.3), 解压。
http://wrapper.tanukisoftware.org/
复制src\bin\sh.script.in到/opt/testapp/bin目录,重命名为SocketServer
复制wrapper\bin目录下的wrapper文件到/opt/testapp/bin目录
复制src\conf\wrapper.conf.in到/opt/testapp/conf目录,重命名为wrapper.conf
复制src\lib\lib目录下3个文件到/opt/testapp/lib目录
wrapper.so
wrapper.jar

2、修改/opt/testapp/bin/SocketServer文件
APP_NAME="SocketServer"
APP_LONG_NAME="SocketServer Application Server"
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="../conf/wrapper.conf"
赋予执行权限
chmod 775 /opt/testapp/bin/SocketServer
chmod 775 /opt/testapp/bin/wrapper

3、修改/opt/testapp/conf/wrapper.conf文件
wrapper.java.command=/opt/jdk1.6.0_02/bin/java
使用WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp
#这里添加你用到的jar包文件,从1..n你自己全写上吧,不过wrapper是必须的
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/test.jar
wrapper.java.classpath.3=/opt/jdk1.6.0_02/lib/dt.jar
wrapper.java.classpath.4=/opt/jdk1.6.0_02/lib/tools.jar
wrapper.java.library.path.1=../lib
#这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类
wrapper.app.parameter.1=cn.com.ppnote.SocketServer
wrapper.app.parameter.2=1
wrapper.app.parameter.3=true
wrapper.app.parameter.4=cn.com.ppnote.SocketServer
wrapper.app.parameter.5=true
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop
上面的配置里使用了WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。

4、让SocketServer开机自动运行
ln -s /opt/testapp/bin/SocketServer /etc/init.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc0.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc1.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc2.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc3.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc4.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc5.d/SocketServer
ln -s /opt/testapp/bin/SocketServer /etc/rc6.d/SocketServer

5、测试 执行命令:service SocketServer start|stop|restart|status
程序运行时,Java Service Wrapper在/opt/testapp/bin/目录下产生wrapper.log日志,
STATUS | wrapper | 2007/08/01 17:17:01 | --> Wrapper Started as Daemon
STATUS | wrapper | 2007/08/01 17:17:01 | Launching a JVM...
INFO | jvm 1 | 2007/08/01 17:17:09 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2007/08/01 17:17:09 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2007/08/01 17:17:09 |
INFO | jvm 1 | 2007/08/01 17:17:10 | 程序开始运行...
INFO | jvm 1 | 2007/08/01 17:17:26 | Connection: Open
......

附目录结构
/opt/testapp/bin
| SocketServer
| wrapper
| wrapper.log(程序运行时自动产生)
/opt/testapp/conf
| wrapper.conf
/opt/testapp/lib
| libwrapper.so
| wrapper.jar
| test.jar