在不修改的情况下启动 Mule 进行远程调试 wrapper.conf

Starting Mule for remote debugging without modifying wrapper.conf

由于工作需要,我一直使用 Mule 3.4.0 版。我正在编写一个服务脚本来管理 Mule 的服务生命周期,并且真的希望能够让它挂起并等待调试器根据参数中是否存在某个选项进行连接。

我对 Bash 和实现这个很满意,但是我很难让 Mule 传递

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9989

底层Java进程,因为它使用自己的(愚蠢的)包装器来处理Java.

我正在尝试修改 bin/mule 脚本,使其具有一种名为 debug 的模式,该模式会在调用时将上述调试器选项传递给 JVM:

bin/mule debug

我目前的工作can be found here on PasteBin,这是第511行附近的相关部分:

debug() {
    echo "Debugging $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        # The string passed to eval must handle spaces in paths correctly.
        COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP"
        ######################################################################
        # Customized for Mule
        ######################################################################


        echo "command line: $COMMAND_LINE"
        echo "mule opts: $MULE_OPTS"
        echo "JPDA_OPTS: $JPDA_OPTS"

        eval $COMMAND_LINE $JPDA_OPTS $MULE_OPTS
        ######################################################################
    else
        echo "$APP_LONG_NAME is already running."
        exit 1
    fi
}

我无法升级到更新版本的 Mule。我需要找到一种方法来修改此脚本,以便在使用 bin/mule debug 调用时简单地等待调试器。我已经对其进行了足够的修改以进入我定义的这个 debug 函数,它基本上是他们自己的 console 函数的副本,用于在控制台模式下启动。我似乎无法弄清楚如何将我的调试选项传递给 JVM。有什么想法吗?

documentation 之后的参数 -debug 出现在 3.4.x:

./mule -debug

试一试。