使用 Java Service Wrapper 将 java 程序作为 linux 服务并且开机自动启动

安装及使用 java wrapper service 

一.从http://wrapper.tanukisoftware.org/doc/english/download.jsp 

    下载 wrapper-linux-x86-64-3.5.45.tar(请使用Community版本,因Professional和Standard版本需要购买Licenses);

下载是个 压缩包 wrapper-linux-x86-64-3.5.45.tar.gz

 二、解压缩后 如图:

 

三、在windows上 创建一个名为 app 目录 ,在这个目录下 再建  bin,conf,lib,logs  四个目录

四、复制文件 至 app 目录下

       1. 拷贝  wrapper-linux-x86-64-3.5.45\bin\wrapper(为二进制文件) 到  app\bin\ 目录下

       2.拷贝  wrapper-linux-x86-64-3.5.45\src\bin\sh.script.in  到  app\bin\ 目录下 并改名为 app.sh (注:将 .in 去掉 )

                   将自己编写的 java程序用到的配置文件都拷贝到该目录下 包括.ini,.xml;

       3.拷贝 wrapper-linux-x86-64-3.5.45\src\conf\wrapper.conf.in  到   app\conf\目录下  并改名为wrapper.conf (注:将 .in 去掉 )

       4.拷贝 wrapper-linux-x86-64-3.5.45\lib\wrapper.jar,libwrapper.so 到 app\lib\目录下 

                  将自己编写的 java程序,及用到的jar包也拷贝到该目录下 

        如图  app目录

       

       app\bin 目录

     

      app/conf 目录

 

     app/lib 目录  SinaServer.jar 是自己编写的java程序,其它四个.jar是从 wrapper压缩包中复制过来的。

    

    app/logs 目录    这个目录运行前是空的  wrapper.log 是 wrapper 自动创建的日志

五. 配置 app.sh , 设置应用程序的名称等(编辑时请使用NotePad2或EditPlus) 打开app.sh搜索  APP_NAME=  

# Application
APP_NAME="MailSender"
APP_LONG_NAME="MailSender Application"

六. 配置 wrapper.conf

# Java Application

# Locate the java binary on the system PATH:
#wrapper.java.command=java
# Specify a specific java binary:
#set.JAVA_HOME=/java/path
wrapper.java.command=%JAVA_HOME%/bin/java

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp #默认使用

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1

wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/classes12.jar  #其它引入jar
wrapper.java.classpath.3=../lib/activation.jar #其它引入jar
wrapper.java.classpath.4=../lib/mail.jar       #其它引入jar
wrapper.java.classpath.5=../lib/App.jar        #当前应用jar

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib #Windows 版本使用Wrapper.DLL,Linux版本使用libwrapper.so

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=com.wisdom.mail.Main #app应用启动类

#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=AppName Application

我用的是 %JAVA_HOME%/bin/java  环境变量

 没变,使用默认

SinaServer.jar为自己编写的程序

 没变,使用默认

 

在IDEA中

 

 七、将 app目录(包括目录下所有文件)  上传 到   linux   服务器的   /usr/local  下

 

八、分别执行 下面命令    目的:赋于 权限

chmod 755 /usr/local/app

cd /usr/local/app/bin

sudo chmod 755 app.sh

sudo chmod 755 wrapper

 注:sudo chmod 755 app.sh  这句  app.sh 一定要加  .sh

九、启动服务

如果要检查服务是否执行正常,可先使用console参数,如果正常就可以使用start来启动服务了

先执行检查

/usr/local/app/bin/app.sh console  

启动服务

/usr/local/app/bin/app.sh start

 PID:2354   为程序运行的 ID

查看当前现在执行的 java 进程

ps -ef | grep java

 下面是  app.sh 的参数

/usr/local/app/bin/app.sh [ console | start | stop | restart | condrestart | status | install | remove | dump ]

Commands:
  console      Launch in the current console.
  start        Start in the background as a daemon process.
  stop         Stop if running as a daemon or in another console.
  restart      Stop if running and then start.
  condrestart  Restart only if already running.
  status       Query the current status.
  install      Install to start automatically when system boots.
  remove       Uninstall.
  dump         Request a Java thread dump if running.

十、我在部署时,遇到的问题及解决方法

1.目录不对

linux的命令  

   cd ..    返回上一级目录  注意 cd 后面有个 空格

   ls        查看目录下的所有文件

2.没有 赋于 权限  

 解决方法:重新 执行 第 八 步

3. app.sh 的执行 参数  不能 同时执行多个 ,应分开执行 如:    /usr/local/app/bin/app.sh console

 4. \bin\logs 目录没有 创建

 

5.自己编写的 Java程序 放错位置。 (注:Java程序所用到的 所有 .jar 也应放到这个目录下 )

 应  放到  /app/lib/ 目录下 

 

 感谢

zljjava

https://blog.csdn.net/zljjava/article/details/7894617

https://blog.csdn.net/zljjava/article/details/8279410

 

posted @ 2022-07-07 11:03  海乐学习  阅读(1163)  评论(0编辑  收藏  举报