java - 启动Mule进行远程调试,无需修改wrapper.conf

标签 java bash mule

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

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

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

到底层 Java 进程,因为它使用自己的 (stupid) 包装器来寻址 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。有什么想法吗?

最佳答案

参数-debug,位于documentation之后,存在于 3.4.x 中:

./mule -debug

尝试一下。

关于java - 启动Mule进行远程调试,无需修改wrapper.conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28311259/

相关文章:

java - 不论模式如何,在 map 中读取avro文件记录都会减少

ArrayList 数据类型的 Java 重载

json - Mule (Dataweave) 将 JSON 数组转换为字符串

linux - 重写一个脚本,让它接受选项参数来控制它的行为

mule - JSON 对象到带有回车符的字符串

java - SFTP Java - 管道关闭 Jsch 异常

Java 8. 使用收集器将值列表分组到范围列表中

java - 在 java 的 simpledateformat 中强制 4 位数年份

linux - 继续远程 bash 脚本

bash - 如果列为空,awk 打印一些东西