以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。 下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。?1、下载Java Service Wrapper(目前版本wrapper-lin...
以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。
下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。?1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。?
http://wrapper.tanukisoftware.org/?
复制src/bin/sh.script.in到/opt/tianlong/bin目录,重命名为QueueTest
复制wrapper/bin目录下的wrapper文件到/opt/tianlong/bin目录?
复制src/conf/wrapper.conf.in到/opt/tianlong/conf目录,重命名为wrapper.conf?
复制src/lib/lib目录下3个文件到/opt/tianlong/lib目录?
wrapper.so?
wrapper.jar?
wrappertest.jar
2、修改/opt/tianlong/bin/QueueTest文件?
APP_NAME="QueueTest" //注意这里,这里的应用服务名称应该与第1步的/opt/tianlong/bin里面的QueueTest名字相同
APP_LONG_NAME="QueueTest Application Server"?
WRAPPER_CMD="./wrapper" //这里的路径要写正确,这里是对应了/opt/tianlong/bin/wrapper这个文件
WRAPPER_CONF="../conf/wrapper.conf" //这里的路径要写正确,这里是对应了/opt/tianlong/conf/wrapper.conf这个文件
赋予执行权限?
chmod 775 /opt/testapp/bin/SocketServer?
chmod 775 /opt/testapp/bin/wrapper?
3、修改/opt/tianlong/conf/wrapper.conf文件?
wrapper.java.command=/usr/java/jdk1.6.0_07/bin/java? ?//这里是写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/tianlong.jar? ???//这里表示将打包好的tianlong.jar放在/opt/tianlong/lib这个文件夹中
wrapper.java.classpath.3=../lib/asterisk-java-0.3.jar
wrapper.java.classpath.4=../lib/mysql-connector-java-5.1.6-bin.jar
wrapper.java.classpath.5=/usr/java/jdk1.6.0_07/lib/dt.jar
wrapper.java.classpath.6=/usr/java/jdk1.6.0_07/lib/tools.jar
wrapper.java.classpath.7=../cofig.properties? ?//这个是应用程序用到的配置文件。如果使用的应用程序需要用到配置,就需要把这个文件包含进来
wrapper.java.library.path.1=../lib? ?//这里是表示wrapper使用到的jar包的路径,一般默认即可,绝对路径是:/opt/tianlong/lib
#这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类?
wrapper.app.parameter.1=tianlong.QueueTest
wrapper.app.parameter.2=1?
wrapper.app.parameter.3=true?
wrapper.app.parameter.4=tianlong.QueueTest
wrapper.app.parameter.5=true?
wrapper.app.parameter.6=1?
wrapper.app.parameter.7=stop?
4、让QueueTest开机自动运行?
ln -s /opt/tianlong/bin/QueueTest??/etc/init.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc0.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc1.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc2.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc3.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc4.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc5.d/QueueTest??
ln -s /opt/tianlong/bin/QueueTest /etc/rc6.d/QueueTest?
5、测试 执行命令:service QueueTest start|stop|restart|status?
程序运行时,Java Service Wrapper在/opt/tianlong/bin/目录下产生wrapper.log日志,?
STATUS | wrapper??| 2009/02/25 17:04:01 | --> Wrapper Started as Daemon
STATUS | wrapper??| 2009/02/25 17:04:01 | Java Service Wrapper Community Edition 3.3.2
STATUS | wrapper??| 2009/02/25 17:04:01 |? ?Copyright (C) 1999-2009 Tanuki Software, Ltd.??All Rights Reserved.
STATUS | wrapper??| 2009/02/25 17:04:01 |? ???http://wrapper.tanukisoftware.org
STATUS | wrapper??| 2009/02/25 17:04:01 |?
STATUS | wrapper??| 2009/02/25 17:04:01 | Launching a JVM...
INFO? ?| jvm 1? ? | 2009/02/25 17:04:02 | WrapperManager: Initializing...
出现上面这个就表示已经配置成功了。如果配置有错误的话,在wrapper.log里面会有提示。
同时,如果程序配置成功的并且启动的话,在/opt/tianlong/bin里面会有一个QueueTest.pid。
附目录结构
/opt/tianlong/
? ??cofig.properties
/opt/tianlong/bin
? ?? ?? ?? ?? ???|?QueueTest
? ?? ?? ?? ?? ???|?wrapper
? ?? ?? ?? ?? ???| wrapper.log(程序运行时自动产生)
/opt/tianlong/conf
? ?? ?? ?? ?? ? |?wrapper.conf
/opt/tianlong/lib
? ?? ?? ?? ?? ? | libwrapper.so
? ?? ?? ?? ?? ? | wrapper.jar
? ?? ?? ?? ?? ? | tianlong.jar
? ?? ?? ?? ?? ? | mysql-connector-java-5.1.6-bin.jar
? ?? ?? ?? ?? ? | asterisk-java-0.3.jar link:http://blog.csdn.net/lhx1026/article/details/3936939
沃梦达教程
本文标题为:使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
基础教程推荐
猜你喜欢
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- springboot自定义starter方法及注解实例 2023-03-31
- Java文件管理操作的知识点整理 2023-05-19
- Java实现查找文件和替换文件内容 2023-04-06
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现线程插队的示例代码 2022-09-03
- java实现多人聊天系统 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- Java并发编程进阶之线程控制篇 2023-03-07