Я застрял на Mule версии 3.4.0 из-за требований на работе. Я пишу служебный скрипт для управления жизненным циклом службы Mule и действительно хотел бы, чтобы он зависал и дождался, когда отладчик будет подключаться, в зависимости от того, присутствует ли в параметрах определенная опция.
Мне комфортно с Bash и реализовать это, но мне очень трудно попытаться заставить Мула пройти мимо
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9989
к основному процессу Java, поскольку он использует свою собственную (тупую) оболочку для обращения к Java.
Я пытаюсь изменить сценарий bin/mule
чтобы иметь режим debug
который передаст вышеупомянутые параметры отладчика JVM при вызове с помощью:
bin/mule debug
Моя текущая работа может быть найдена здесь на 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. Есть идеи?