Хотя я пишу эту статью для OS Linux возможно некоторые примеры будут
работать и с другими операционными системами, я на это надеюсь. Прежде чем
перейти к изложению материала, я бы хотел напомнить как установить JBoss в крации.
Прежде всего нужно скачать дистрибутив ( у меня jboss-4.2.2.GA.zip),
распаковать его в директорию (у меня /opt/jboss-4.2.2.GA), установить переменную
окружения $JBOSS_HOME я делаю все в файле .bashrc (запускается каждый раз при
входе пользователя в sh):
#cat /home/vit/.bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
JAVA_HOME=/opt/jdk1.6.0_05
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
JBOSS_HOME=/opt/jboss-4.2.2.GA
export JBOSS_HOME
Под строкой "host:port" я понимаю доменное имя интерфейса (просмотреть настройки
можно командой ifconfig) или его IP-adress и порт на котором запускается
JBOSS server. По умолчанию http://host:port соответствует http://localhost:8080 или
http://127.0.0.1:8080
Как запустить сервер
Использовать один из способов:
- JBOSS_HOME/bin# ./run.sh
- JBOSS_HOME/bin# nohup ./run.sh > jboss.log
- JBOSS_HOME/bin# ./run.sh -c all -b 127.0.0.1
Как остановить сервер
Использовать один из способов:
- JBOSS_HOME/bin# ./shutdown.sh -S
- JBOSS_HOME/bin# ./shutdown.sh -S --server=host:port (в случае localhost -> --server=127.0.0.1:1099)
- Crtl+C в окне терминала где был запушен JBoss server
- kill -TERM <pid> (<pid> - номер процесса JBoss)
- В http://host:port/jmx-console, выбрать type=Server в domain - jboss.system
найти void shutdown() нажать на кнопку Invoke
Java/JVM настройки (поменять можно в скрипте run.sh или run.conf)
JAVA JAVA_HOME=/opt/jdk1.6.0_05
Total Memory JAVA_OPTS="$JAVA_OPTS -Xms:1024m -Xmx1024m"
Perm Memory JAVA_OPTS="$JAVA_OPTS -XX:PermSize=256m -XX:MaxPermSize=256m"
Young Memory JAVA_OPTS="$JAVA_OPTS -XX:NewSize=256m -XX:MaxNewSize=256m"
HotSpot JAVA_OPTS="$JAVA_OPTS -Server"
Twiddle - консольная утилита управления Jboss server'om
(в принципе дублирует http://host:port/jmx-console - (в случае localhost -> --server=127.0.0.1:8080))
Формат использования: ./twiddle.sh [options] <command> [command_arguments]
JBOSS_HOME/bin# ./twiddle.sh -H get - получение справки по командам
JBOSS_HOME/bin# ./twiddle.sh -s host:port <command> - удаленное поключение к серверу
(в случае localhost -> --server=127.0.0.1:1099)
JBoss статус ./twiddle.sh get "jboss.system:type=Server" Started
Получить ThreadDump ./twiddle.sh invoke "jboss.system:type=ServerInfo" listThreadDump
Получить web-application(приложения) ./twiddle.sh query "jboss.web.deployment:*"
Проверить статус приложения ./twiddle.sh get --noprefix `./twiddle.sh query "jboss.web.deployment:*" | grep web-console.war` StateString
Изменить DefaultDS pool size ./twiddle.sh set "jboss.jca:name=DefaultDS,service=ManagedConnectionPool" MaxSize 21
Web утилиты управления Jboss server'om
Существует 2 утилиты управления Jboss server'om, они дублируют друг друга:
jmx-console (web интерфейс), web-console (апплет + web интерфейс)
http://host:port/jmx-console http://host:port/web-console
Включить JMX (все настройки прописать в скрипте run.sh или run.conf)
По умолчанию включаем стандартный доступ к JBoss для утилиты JConsole JMX
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
запускаем jconsole эта утилита входит в стандартную поставку jdk и служит для работы с JMX серверами.
В открывшемся окне выбираем Remote Process и вводим 127.0.0.1:3099 Jconsole теперь должна подключиться к витруальной машине
и отобразить массу полезной информации. Подождите немного, пока графики наполнятся реальными данными.
Зайдите на вкладку MBeans и поиграйтесь с параметрами виртуальной машины. Найдите, к примеру,
ветку java.lang->ClassLoading->Attributes и посмотрите, сколько классов загрузила виртуальная машина.
Во вкладке java.lang->Memory->Operations можно выполнить операцию gc - вызвать на удаленной виртуальной машине garbage collector.
Запустить JBoss как MBean Server
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
Тогда появяться 2 домена java.lang и java.util.logging в jmx-console и web-console
Настройка Логгирования (Logging)
Конфигурационный файл: $JBOSS_HOME/server/default/conf/jboss-log4j.xml
Уровни логгирования по убыванию: FATAL, ERROR, WARN, INFO, DEBUG, TRACE
так же есть 2 спец уровня: ALL и OFF. настраиваются они(уровни) в элементах:
Appender <param name="Threshold" value="INFO"/>
Category <priority value="WARN"/>
По умолчанию логгирование идет на консоль (CONSOLE - System.out) и в файл
(FILE - ${jboss.server.log.dir}/server.log). В продакшене лучше отключить вывод на CONSOLE
для этого закоминтируем строчку <appender-ref ref="CONSOLE"/>:
<root>
<!--<appender-ref ref="CONSOLE"/>-->
<appender-ref ref="FILE"/>
</root>
Хотелось бы еще добавить что для FILE можно организовать ротацию файлов,
регулировать размер файла, что бы узнать как это делается вам нужно
посетить сайт Jakarta Log4j - http://jakarta.apache.org/log4j
Если вы хотите изменить уровень работающего server'a то в jmx-console (http://host:port/jmx-console)
выберите домен jboss.system и service=Logging,type=Log4jService в нем есть функция void setLoggerLevel()
введем в поле Logger - ParamValue - org.apache, a в поле Level - ParamValue - WARN и нажмем кнопку Invoke
Все вы сменили уровень логирования с INFO для logger'a - org.apache на уровень WARN
Deploying application как root (http://host:port/ - root path)
1 способ: удалить существуюший файл или каталог ROOT.WAR и на его место
deploy свое приложение (application) как ROOT.WAR.
2 способ: Использовать файл jboss-web в нем установить <context-root>/</context-root>:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<context-root>/</context-root>
</jboss-web>
3 способ: если ваше web-applicatin(*.war) входит в J2EE-application(*.ear) то измените <context-root> в application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_5.xsd"
version="5">
<display-name>MyApp</display-name>
<module id="Struts2-Web">
<web>
<web-uri>Struts2.war</web-uri>
<context-root>/</context-root>
</web>
</module>
</application>
Изменить по умолчанию стандартный HTTP Port
По умолчанию HTTP/HTTPS порты в JBoss настроены на 8080/8443, для смены их, найдите их в файлах:
defalt/deploy/jboss-web.deployer/server.xml
defalt/deploy/http-invoker.sar/META-INF/jboss-service.xml
defalt/deploy/jbossws.sar/jbossws.beans/META-INF/jboss-beans.xml
и измените значения на нужный вам port, но если вы не используете web-сервисы (JBossWS),
то нужно произвести изменения только в 2-х файлах server.xml и jboss-service.xml,
но я делаю "навсякий случай" тупо поиск по значению 8080 в 3-х файлах и интуитивно
рядом с числом 8080 ищу слово port.
Настройка DataSource
По умолчанию файл настройки должен иметь в конце суффикс -ds.xml (vit_mysql-ds.xml)
Примеры всех конфигурационных файлов Баз Данных поддерживаемых JBoss server'om можно найти в
$JBOSS_HOME/docs/examples/jca Подходящий вам файл вы должны скопировать в
$JBOSS_HOME/server/default/deploy и настроить строку подключения к БД, пароль,
пользователя БД и другие необходимые параметры.
Защитить Web утилиты управления Jboss server'om паролем
Как я говорил существует 2 утилиты управления Jboss server'om:
jmx-console (web интерфейс), web-console (апплет + web интерфейс)
для http://host:port/jmx-console раскоментируйте в файле
$JBOSS_HOME/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
строчку:
<security-domain>java:/jaas/jmx-console</security-domain>
в файле:
$JBOSS_HOME/server/default/deploy/jmx-console.war/WEB-INF/web.xml
строки:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
в файле:
$JBOSS_HOME/server/default/conf/props/jmx-console-users.properties
поменяйте пароль с admin на свой: было admin=admin - стало admin=myPassword
для http://host:port/web-console аналогично раскоментируйте
$JBOSS_HOME/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
строчку:
<security-domain>java:/jaas/web-console</security-domain>
в файле:
$JBOSS_HOME/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml
строки:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
в файле:
$JBOSS_HOME/server/default/conf/props/web-console-users.properties
поменяйте пароль с admin на свой: было admin=admin - стало admin=myPassword
теперь при доступе к ресурсам будете вводить :)
login: admin
password: myPassword
PS Как любила говорить моя преподавательница английского языка:
"это - Программа минимум, чего вы должны знать для получения 3 на экзамене" :) :) :)
сдесь собран тот минимум который необходимo знать при администрировании JBoss Server'a


Как всегда с удовольствием
Как всегда с удовольствием прочитал статью Vita, и не просто прочитал, а "намотал на ус", так сказать, чтобы применить в ближайшее время. Спасибо, камрад! Java rulezzz forewer!
Рад слышать что кто-то читает
Рад слышать что кто-то читает мои статьи :) хочу добавить что прежде чем лезть админить jboss я бы рекомендовал всем почитать что такое JMX, и почитать про Garbage Collector java и как его настраивать в JVM.
Я поговорил Denis_aka_xaos -
Я поговорил Denis_aka_xaos - предлагаю перенести материалы с linux16.net на world16.ru (наш аналог Хабра) Vit, Mabel - как вас найти? Постучитесь в ICQ 481443360 или в Jabber'е, или Mihael напишите!
Отправить комментарий