Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ubuntu upstart运行java服务_Java_Classpath_Upstart - Fatal编程技术网

使用Ubuntu upstart运行java服务

使用Ubuntu upstart运行java服务,java,classpath,upstart,Java,Classpath,Upstart,我无法定义有效的upstart conf脚本来使用具有以下要求的upstart运行java服务: 我必须使用文件夹指定类路径,因为我在多个文件夹中有许多JAR 我必须收听服务myservicename stop启动的关机信号 基于,我实现了一个shutdownhook侦听器,所以我需要upstart向我发送终止信号,并等待我的应用程序终止 以下是我的buggy upstart脚本: description "masa" author "Muhammad Gelbana <m.glba@

我无法定义有效的upstart conf脚本来使用具有以下要求的upstart运行java服务:

  • 我必须使用文件夹指定类路径,因为我在多个文件夹中有许多JAR
  • 我必须收听
    服务myservicename stop启动的关机信号
基于,我实现了一个shutdownhook侦听器,所以我需要upstart向我发送终止信号,并等待我的应用程序终止

以下是我的buggy upstart脚本:

description "masa"
author "Muhammad Gelbana <m.glba@gmail.com>"

start on runlevel [2345]
stop on shutdown
kill timeout 120

script
    LOGS_DIR=/home/mgelbana/services/RealServices/logs
    IPK_DB=/home/mgelbana/services/RealServices/config/db-ipk.properties
    PRO_DB=/home/mgelbana/services/RealServices/config/db-reporting-engine.properties
    MAIN_CLASS=com.sger.masaTA
    mkdir -p $LOGS_DIR
    CLASSPATH="/home/mgelbana/services/RealServices/masa-RealService-TA.jar"
    for i in /home/mgelbana/services/commons/*.jar; do
    CLASSPATH="$CLASSPATH:$i"
    done
    for i in /home/mgelbana/services/RealServices/lib/*.jar; do
    CLASSPATH="$CLASSPATH:$i"
    done
    echo '\n\n\n====================================================='
    echo 'Service startup:\t'`date`
    echo 'Main class:\t\t'`echo $MAIN_CLASS`
    echo 'Logs directory:\t\t'`echo $LOGS_DIR`
    echo 'masa database configuration:\t'`echo $IPK_DB`
    echo 'Pro configuration file:\t'`echo $PRO_DB`
    echo 'Starting engine...'
    java -Dta.id=2 -DIPK_DB=$IPK_DB -DPRO_DB=$PRO_DB -cp $CLASSPATH $MAIN_CLASS
end script
说明“masa”
作者“穆罕默德·盖尔巴纳”
从运行级别开始[2345]
停机停机
终止超时120
剧本
LOGS\u DIR=/home/mgelbana/services/RealServices/LOGS
IPK_DB=/home/mgelbana/services/RealServices/config/DB-IPK.properties
PRO_DB=/home/mgelbana/services/RealServices/config/DB-reporting-engine.properties
MAIN_CLASS=com.sger.masaTA
mkdir-p$LOGS\u DIR
CLASSPATH=“/home/mgelbana/services/RealServices/masa RealService TA.jar”
对于i in/home/mgelbana/services/commons/*.jar;做
CLASSPATH=“$CLASSPATH:$i”
完成
对于i-in/home/mgelbana/services/RealServices/lib/*.jar;做
CLASSPATH=“$CLASSPATH:$i”
完成
回音“\n\n\n===========================================================================”
echo'服务启动:\t'`日期`
echo'Main class:\t\t''echo$Main\u class`
echo'Logs目录:\t\t'`echo$Logs\u目录`
echo'masa数据库配置:\t'`echo$IPK_DB`
echo'Pro配置文件:\t'`echo$Pro\u DB`
echo“启动发动机…”
java-Dta.id=2-DIPK_DB=$IPK_DB-DPRO_DB=$PRO_DB-cp$CLASSPATH$MAIN_CLASS
结束脚本
以下错误显示在
/var/log/upstart/myservicename.log
日志中:
/proc/self/fd/9:9:/proc/self/fd/9:语法错误:单词意外(应为“do”)


谢谢。

显示您的代码。你的问题是什么?关闭钩子加上更长的
终止超时时间应该是正确的方法。当停止作业时,Upstart首先发送术语信号(这将导致关闭挂钩启动),然后如果进程在
终止超时后未退出(默认为5秒),它将发送终止信号。@Tichodroma,非常抱歉,我现在编辑了它。@Tichodroma,当我启动服务时,底部声明的错误显示在服务日志中。非常感谢。对于目录中的所有jar文件,Java将类路径条目
/some/dir/*
视为等同于
some/dir/jar1.jar:/some/dir/jar2.jar:…
,这样就可以消除for循环:
CLASSPATH='/home/mgelbana/services/RealServices/masa RealService TA.jar:/home/mgelbana/services/commons/*:/home/mgelbana/services/RealServices/lib/*”
(单引号作为星号必须防止shell扩展)。