由于工作需要,我被困在 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。有什么想法吗?
最佳答案
关于java - 启动Mule进行远程调试,无需修改wrapper.conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28311259/