4

Я использую JBoss 7.1.3.Final. При развертывании с использованием инструмента CLI можно также вывести исключение, которое произошло в журналах, из-за которых произошла сбой развертывания? Мы запускаем автоматическое ночное развертывание, и я хотел бы иметь возможность сообщать об исключении в электронном письме, а не заставлять людей входить в систему и просматривать журналы сервера. Вот то, что я делал до сих пор ...Могу ли я заставить инструмент JBoss CLI сообщить об исключении, вызвавшем неудачу моего развертывания?

$ $JBOSS_HOME/bin/jboss-cli.sh --file=/tmp/my.cli 

, в котором содержание «my.cli» являются

connect 
deploy --force /tmp/my.war 

Однако то, что сообщается прямо сейчас на commond линии

{"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./my" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./my: JBAS018040: Failed to start context"},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"my.war\".jboss.security.jacc Missing[JBAS014861: <one or more transitive dependencies>]"]}}} 

ответ

0

Несмотря на то, что вы можете использовать почтовую службу с Jboss (here и here), но я не знаю, как вы можете объединить ее с jboss-cli. Поэтому я предпочитаю отправлять почту с ответственностью за вашу руку!

Я предполагаю, что ваш jboss работает на сервере linux:

При выполнении команды развертывания, возьмите выход в переменную оболочки (если она возвращает какой-либо). Например:

deploy_response = $($JBOSS_HOME/bin/jboss-cli.sh --file=/tmp/my.cli) 

Или, если журнал записывается в лог-файл, а затем прочитать последние несколько строк (вы знаете, сколько строк обычно записывается при возникновении ошибки) в переменную.

## readling last 3 lines and joining them into one line 
deploy_response = $(tail -n3 /your/log/file.log | tr "\\n" " ") 

Теперь у вас есть ответ на развертывание в вашей руке. Проверьте там сообщение об ошибке. Обычно ошибки Jboss используются в таком формате JBASxxxxxx. Поэтому это будет полезно для обнаружения ошибки jboss.

## if [[ $deploy_response == *Composite operation failed* ]] 
if [[ $deploy_response =~ JBAS\d\d\d\d\d\d ]] 
then 
    ## assuming you have send mail is configured. 
    echo $deploy_response | mail -s "jboss deployment error" [email protected] 
fi 
+0

Что касается получения строк из файла журнала, получение последних 3 строк не будет сделано. Иногда ошибка, которая устраняет неудачу развертывания, охватывает не только последние 3 строки. – Dave

+0

Получил ваш момент. В этом случае вы можете повернуть файл журнала. Я имею в виду, когда вы запускаете развертывание, а затем перемещаете старый журнал в архив и каждый раз создаете новый файл журнала. Затем прочитайте весь файл для сообщения об ошибке msg ('cat file.log'). –

+0

Поскольку я пытаюсь автоматизировать все это, чтение потенциально многобайтового байтового файла для ошибки не является вариантом. Мне любопытно, могу ли я получить сообщение об ошибке, вызвавшее отказ от инструмента CLI, а если нет, если есть какой-то другой автоматизированный способ его выяснения. – Dave

0

Если вы используете Maven Wildfly Deployment он будет выводить сообщение об ошибке в журнал. Затем вы можете просто отправить свой инструмент CI в журнал сбоев.

Смежные вопросы