Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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
Java服务包装器和其他应用程序命令行参数_Java_Java Service Wrapper - Fatal编程技术网

Java服务包装器和其他应用程序命令行参数

Java服务包装器和其他应用程序命令行参数,java,java-service-wrapper,Java,Java Service Wrapper,我目前正在使用它来包装我开发的java应用程序。我需要能够通过java服务包装器向我的应用程序传递额外的命令行参数 假设我的应用程序名为myapp,并且我已经设置了java服务包装器,以便我运行以启动的脚本名为myapp。我希望能够做到这样: ./myapp启动参数1参数2 并将这些附加参数传递到我的应用程序中。有什么办法吗?我发现通过谷歌搜索和查看文档只会了解如何使用命令行参数来设置java服务包装器。除了将命令行参数硬编码到wrapper.conf文件中之外,我很难找到任何关于向应用程序传递

我目前正在使用它来包装我开发的java应用程序。我需要能够通过java服务包装器向我的应用程序传递额外的命令行参数

假设我的应用程序名为myapp,并且我已经设置了java服务包装器,以便我运行以启动的脚本名为myapp。我希望能够做到这样:

./myapp启动参数1参数2

并将这些附加参数传递到我的应用程序中。有什么办法吗?我发现通过谷歌搜索和查看文档只会了解如何使用命令行参数来设置java服务包装器。除了将命令行参数硬编码到wrapper.conf文件中之外,我很难找到任何关于向应用程序传递命令行参数的信息


现在我觉得我的选择是获取额外的命令行参数,将它们设置为环境变量,并将这些硬编码到wrapper.conf中。不过,我不想走这条路,我希望我忽略了一些东西。

你能举一个“myapp”脚本的例子吗?不是全部内容,但是看看启动
java
进程的部分是什么样子会很有用


您想要完成的工作应该非常简单,即确保脚本将
$@
传递到
java
进程中。在Bash中,
$@
是一个数组,包含传递到脚本中的所有参数。如果java服务包装器生成的包装器需要您将“start”作为参数之一传递,那么您可能需要添加一些脚本来将所有参数传递给
java
进程。

在3.5.2版本的包装器中,我们添加了一种可能性,通过使用“-”来实现您的要求要将参数置于java应用程序之前,请执行以下操作:

这基本上适用于直接调用包装器的二进制文件,但对于shell脚本,您可以通过稍微修改它来轻松实现这一点:

打开脚本并在控制台()中,start()(以及可选的launchdinternaly())将命令行设置为以下内容:

    COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" $ANCHORPROP $STATUSPROP $LOCKPROP $@"
请注意结尾处的$

现在,转到脚本的末尾,在那里它决定应该调用什么函数(控制台、启动、停止、重新启动等)

在“控制台”、“启动”(和“启动内部”)中设置一个移位,并将参数从命令行传递到函数:

'console')
    checkUser touchlock $1
    shift
    console $@
    ;;

'start')
    if [ "$DIST_OS" = "macosx" -a -f "/Library/LaunchDaemons/${APP_PLIST}" ] ; then
        macosxstart
    else
        checkUser touchlock $1
        shift
        start $@
    fi
    ;;
。。 ‘内部发射’)

之后,您可以如下方式调用脚本:

/脚本开始|控制台--para1 para2

希望这对你有所帮助

干杯, 克里斯蒂安

杰克, 快速跟进。在Java服务包装器的shell脚本的3.5.5版本中,我们在顶部添加了一个新的PASS_THROUGH选项,现在可以将命令行参数传递到JVM

该脚本使用Christian在8月份提到的“-”命令行参数

干杯, 莱夫

    shift
    launchdinternal $@
    ;;