WildFly (JBoss) — Cheatsheet

If you like this project, consider supporting me on Buy Me a Coffee ☕️

🦅 WildFly (JBoss) — Cheatsheet

Description

WildFly (formerly JBoss AS) is a free, open-source Jakarta EE application server developed by Red Hat. It is the upstream project for JBoss EAP (Enterprise Application Platform). WildFly provides a full Jakarta EE implementation including EJB, JPA, JMS (ActiveMQ Artemis), CDI, and more.

Common use cases / Типичные сценарии:

[!NOTE] WildFly is actively developed and is the open-source upstream for Red Hat's commercial JBoss EAP. Alternatives include Apache Tomcat (servlet container only), Payara (GlassFish fork), and Open Liberty (IBM). For microservices, consider Quarkus (also by Red Hat, built on WildFly components) or Spring Boot. WildFly — open-source основа для коммерческого JBoss EAP от Red Hat. Альтернативы: Tomcat (только сервлеты), Payara, Open Liberty. Для микросервисов: Quarkus или Spring Boot.


Installation & Configuration

Default Ports / Порты по умолчанию

Port / Порт Purpose / Назначение
8080 HTTP Application traffic / HTTP-трафик приложения
8443 HTTPS Application traffic / HTTPS-трафик
9990 Management API & Web Console / Веб-консоль управления
9993 Management HTTPS / Защищённое управление

Directory Structure / Структура каталогов

Assuming WildFly is installed in /opt/wildfly (WILDFLY_HOME).

Path / Путь Purpose / Назначение
/opt/wildfly/bin/ Start/stop scripts, CLI (jboss-cli.sh) / Скрипты запуска
/opt/wildfly/standalone/configuration/ Config files (Standalone) / Конфиги Standalone
/opt/wildfly/standalone/deployments/ Auto-deploy directory / Папка авто-деплоя
/opt/wildfly/standalone/log/ Server logs / Логи сервера
/opt/wildfly/domain/ Domain mode directories / Папки режима Domain

Operating Modes

WildFly supports two operating modes, each suited for different deployment scenarios:

Standalone Mode Configuration Profiles / Профили Standalone

/opt/wildfly/standalone/configuration/

Profile Contains / Содержит
standalone.xml Default Java EE web profile (Servlet, JSP, EJB, JPA)
standalone-ha.xml High Availability (Clustering, JGroups, mod_cluster)
standalone-full.xml Full Java EE (adds Messaging — ActiveMQ Artemis)
standalone-full-ha.xml Full Java EE + High Availability

Service & Access Management

User Management / Управление пользователями

WildFly has no default users. You must create one to access the Web Management Console (:9990).

# Add Management user (Interactive) / Создание пользователя управления
/opt/wildfly/bin/add-user.sh -u <ADMIN_USER> -p <PASSWORD> --silent

# Add Application user (Interactive) / Создание пользователя приложения
/opt/wildfly/bin/add-user.sh -a -u <APP_USER> -p <PASSWORD> -g <GROUP_NAME>

Binding to External IPs / Привязка к внешним IP

By default, WildFly binds to 127.0.0.1. To allow external access:

# Start standalone bound to all IPv4 addresses / Запуск на всех IP
/opt/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0

# Using specific profile / Использование конкретного профиля
/opt/wildfly/bin/standalone.sh -c standalone-ha.xml -b 0.0.0.0

[!WARNING] Do NOT expose the management interface (-bmanagement) to the public internet. Restrict access via firewall to admin IPs only. НЕ открывайте management-интерфейс (-bmanagement) в публичный интернет. Ограничьте доступ файрволом.

Service Control (Systemd) / Управление сервисом

sudo systemctl start wildfly     # Start / Старт
sudo systemctl stop wildfly      # Stop / Остановка
sudo systemctl restart wildfly   # Restart / Перезапуск
sudo systemctl status wildfly    # Status / Статус
sudo systemctl enable wildfly    # Enable at boot / Автозапуск

Deployment (jboss-cli)

[!TIP] The jboss-cli.sh is the most powerful tool for automating WildFly operations without restarting the server or editing XML files manually. jboss-cli.sh — самый мощный инструмент для автоматизации операций WildFly без перезапуска.

Connecting to CLI / Подключение к CLI

# Connect to local management port / Подключение к локальному CLI
/opt/wildfly/bin/jboss-cli.sh --connect

# Connect with credentials / Подключение с авторизацией
/opt/wildfly/bin/jboss-cli.sh --connect --user=<USER> --password=<PASSWORD>

Application Deployment / Деплой приложений

# Inside jboss-cli.sh / Внутри консоли jboss-cli
[standalone@localhost:9990 /]

# Deploy a WAR/EAR file / Деплой архива
deploy /path/to/application.war

# Force overwrite existing deployment / Перезапись существующего
deploy /path/to/application.war --force

# Undeploy / Удаление приложения
undeploy application.war

# List deployed apps / Список развёрнутых приложений
deployment-info

Scripted CLI (Non-interactive) / Скриптовое исполнение CLI

# Run CLI commands automatically / Автоматическое выполнение команд
/opt/wildfly/bin/jboss-cli.sh --connect --command="deploy /path/to/app.war --force"

JVM Tuning & Performance

/opt/wildfly/bin/standalone.conf

# --- Memory Allocation (Heap & Metaspace) / Память ---
# Set min/max heap equally to prevent resizing overhead
JAVA_OPTS="-Xms2G -Xmx2G -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m"

# --- Garbage Collector (G1GC is default in modern Java) / Сборщик мусора ---
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+ParallelRefProcEnabled"

# --- IPv4 Stack Force / Принудительный IPv4 ---
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

# --- GC Logging / Логирование GC ---
JAVA_OPTS="$JAVA_OPTS -Xlog:gc*:file=/opt/wildfly/standalone/log/gc.log:time,uptime:filecount=5,filesize=10M"

DataSource Creation (CLI) / Создание пула подключений

# 1. Add JDBC Driver module / Добавление модуля драйвера
/opt/wildfly/bin/jboss-cli.sh --connect --command="module add --name=com.mysql --resources=/tmp/mysql-connector-java.jar --dependencies=javax.api,javax.transaction.api"

# 2. Add driver to subsystem / Регистрация драйвера
/opt/wildfly/bin/jboss-cli.sh --connect --command="/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.cj.jdbc.MysqlXADataSource)"

# 3. Create DataSource / Создание источника данных
/opt/wildfly/bin/jboss-cli.sh --connect --command="data-source add --name=MySqlDS --jndi-name=java:/MySqlDS --driver-name=mysql --connection-url=jdbc:mysql://<DB_IP>:3306/<DB_NAME> --user-name=<DB_USER> --password=<DB_PASSWORD> --min-pool-size=10 --max-pool-size=50 --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"

Security

SSL/TLS Configuration / Конфигурация SSL/TLS

# Create keystore / Создать keystore
keytool -genkey -alias wildfly -keyalg RSA -keysize 2048 \
  -keystore /opt/wildfly/standalone/configuration/keystore.jks \
  -storepass <PASSWORD>

# Import certificate / Импортировать сертификат
keytool -import -alias wildfly -file certificate.crt \
  -keystore /opt/wildfly/standalone/configuration/keystore.jks \
  -storepass <PASSWORD>

Enable HTTPS via CLI / Включить HTTPS через CLI

# Configure Elytron SSL context / Настройка Elytron SSL
/opt/wildfly/bin/jboss-cli.sh --connect << EOF
/subsystem=elytron/key-store=httpsKS:add(path=keystore.jks,relative-to=jboss.server.config.dir,type=JKS,credential-reference={clear-text=<PASSWORD>})
/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=<PASSWORD>})
/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=[TLSv1.2,TLSv1.3])
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=httpsSSC)
reload
EOF

Security Best Practices / Лучшие практики безопасности


Troubleshooting & Logs

Log File Locations / Расположение логов

Log / Лог Path / Путь
Main Server Log / Главный лог сервера /opt/wildfly/standalone/log/server.log
HTTP Access Log / Лог доступа HTTP /opt/wildfly/standalone/log/access_log.log (if enabled)
Garbage Collection Log / Лог GC /opt/wildfly/standalone/log/gc.log
# View live server logs / Просмотр логов в реальном времени
tail -f /opt/wildfly/standalone/log/server.log

# Filter for errors / Поиск ошибок
grep -i "ERROR" /opt/wildfly/standalone/log/server.log

Changing Log Levels via CLI / Изменение уровня логирования

# Set root logger to DEBUG (Temporary without restart) / Временное включение DEBUG
/opt/wildfly/bin/jboss-cli.sh --connect --command="/subsystem=logging/root-logger=ROOT:write-attribute(name=level,value=DEBUG)"

Thread Dump / Дамп потоков

# Get PID / Получить PID
ps aux | grep wildfly

# Generate thread dump / Создать дамп потоков
kill -3 <PID>                                            # Output to server.log
jstack <PID> > thread_dump.txt                          # Save to file / Сохранить в файл

Heap Dump / Дамп кучи

# Generate heap dump / Создать дамп кучи
jmap -dump:format=b,file=/tmp/heap_dump.bin <PID>

# Analyze with Eclipse MAT or VisualVM
# Анализ с помощью Eclipse MAT или VisualVM

Check Port Usage / Проверка занятых портов

sudo ss -tlnp | grep java                               # Check Java ports / Проверить порты Java
sudo netstat -tlnp | grep :8080                          # Check specific port / Проверить порт

[!CAUTION] If WildFly fails to start due to Address already in use, verify no other Tomcat/JBoss instance is running on port :8080. Если WildFly не запускается из-за Address already in use, убедитесь что другой Tomcat/JBoss не занимает порт :8080.


Logrotate Configuration

/etc/logrotate.d/wildfly

/opt/wildfly/standalone/log/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

[!WARNING] Use copytruncate for WildFly logs as the JVM keeps file handles open. Используйте copytruncate для логов WildFly, так как JVM держит файлы открытыми.



On this page

🦅 WildFly (JBoss) — Cheatsheet Description Installation &amp; Configuration Default Ports / Порты по умолчанию Directory Structure / Структура каталогов Operating Modes Standalone Mode Configuration Profiles / Профили Standalone Service &amp; Access Management User Management / Управление пользователями Binding to External IPs / Привязка к внешним IP Service Control (Systemd) / Управление сервисом Deployment (jboss-cli) Connecting to CLI / Подключение к CLI Application Deployment / Деплой приложений Scripted CLI (Non-interactive) / Скриптовое исполнение CLI JVM Tuning &amp; Performance DataSource Creation (CLI) / Создание пула подключений Security SSL/TLS Configuration / Конфигурация SSL/TLS Enable HTTPS via CLI / Включить HTTPS через CLI Security Best Practices / Лучшие практики безопасности Troubleshooting &amp; Logs Log File Locations / Расположение логов Changing Log Levels via CLI / Изменение уровня логирования Thread Dump / Дамп потоков Heap Dump / Дамп кучи Check Port Usage / Проверка занятых портов Logrotate Configuration Documentation Links