由于工作要求,我被困在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
函数的副本,用于在控制台模式下启动。我似乎无法弄清楚如何将我的调试opts传递给JVM。有什么想法吗?