• 使用 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

  • 相关阅读:
    Plus One
    Move Zeroes
    Valid Number
    对于人生道路的些许感慨
    关于session.getValueNames()的一个问题
    jsp记录
    alter和modify的区别
    关于新手SQL Server 2008数据库的首次使用出现的问题
    今年大二,要开始java的学习了,听前辈说记录一下自己的学习过程会有一些好处
    MFC多文档无法显示可停靠窗格
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/14962709.html
Copyright © 2020-2023  润新知