При перезагрузке Oracle сервера иногда зависают JDBC соединения с базой, а бывает соединения просто "утекают". В результате заканчивается пул подключений и GlassFish перестает нормально функционировать.
Чтобы это исправить нужно сделать Flush каждому JDBC пулу. А когда этих пулов больше 2-3 это становится очень утомительным занятием.
Для автоматизации очистки JDBC пулов написал следующий скрипт:
утилита получает список всех директорий (доменов) GlassFish, парсит конфиг файл каждого домена, получает список всех JDBC пулов и делает им очистку.
Чтобы это исправить нужно сделать Flush каждому JDBC пулу. А когда этих пулов больше 2-3 это становится очень утомительным занятием.
Для автоматизации очистки JDBC пулов написал следующий скрипт:
утилита получает список всех директорий (доменов) GlassFish, парсит конфиг файл каждого домена, получает список всех JDBC пулов и делает им очистку.
#!/bin/bash # путь к доменам GlassFish и административной утилите asadmin="/cygdrive/с/glassfish3/bin/asadmin.bat" glassfish_path="/cygdrive/с/glassfish3/glassfish/domains/" cd $glassfish_path # Получаем список всех доменов find . -maxdepth 1 -mindepth 1 -type d | sed -e '/^$/d' | while read line; do echo -n "Parsing Domain: " $line", Admin Port: " if ls "$glassfish_path/$line/config/domain.xml" > /dev/null 2> /dev/null ; then # Получаем админский порт ... admin_port=$(cat $glassfish_path/$line/config/domain.xml | grep 'network-listener port=' | grep 'admin-listener' | head -1 | sed -e 's/.*listener port="//g' -e 's/".protocol.*//g') if [ "$admin_port" -gt 0 ]; then echo "$admin_port" # ... подключаемся к этому порту и получаем список всех JDBC пулов $asadmin --host=localhost --port=$admin_port --passwordfile 'Path_To_FIle\password_file.txt' --user=admin << EOF | grep -ve "DerbyPool" -e "_TimerPool" -e "executed successfully" -e "for online help" | while read connection; do list-jdbc-connection-pools EOF echo -e "\tFlushing Pool: " $connection # чистим пул $asadmin --interactive=false --echo=false --port $admin_port --passwordfile 'Path_To_FIle\password_file.txt' --user admin <<EOF | grep -ve "for online help" -e "Command multimode" -e "executed successfully" flush-connection-pool $connection EOF done else echo "N/A" fi fi done
Если статья была вам полезна - кликните на баннер или кнопку Donate :)
Комментариев нет:
Отправить комментарий