Wildfly

Материал из PayControl Wiki
Версия от 18:18, 6 апреля 2023; D.bizyukov (обсуждение | вклад) (Добавление сертификатов корпоративных УЦ)
Перейти к: навигация, поиск

Содержание

Настройка

Из командной строки

Подключение к консоли:

sudo /opt/wildfly/bin/jboss-cli.sh --connect

Выполнение команд в неинтерактивном режиме:

sudo /opt/wildfly/bin/jboss-cli.sh --connect --commands=ls\ deployment

Настройка PayControl

Удаление настроек по умолчанию:

data-source remove --name=ExampleDS
/subsystem=ee/service=default-bindings:remove()
reload
/subsystem=datasources/jdbc-driver=h2:remove
/subsystem=undertow/server=default-server/host=default-host/location=\/:remove()
/subsystem=undertow/configuration=handler:remove()

Добавление драйвера (postgresql) и источников данных:

module add --name=org.postgresql --resources=/opt/paycontrol/postgresql-42.2.5.jar --dependencies=javax.api,javax.transaction.api,javax.servlet.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql",driver-class-name=org.postgresql.Driver)
data-source add --jndi-name=java:jboss/datasources/PayControlDS --name=PayControlDS --connection-url=jdbc:postgresql://localhost:5432/pcs --driver-name=postgres --user-name=pcuser --password=XXXXXXXX
data-source add --jndi-name=java:jboss/datasources/PayControlISDS --name=PayControlISDS --connection-url=jdbc:postgresql://localhost:5432/pcis --driver-name=postgres --user-name=pcuser --password=XXXXXXXX

Установка wsdl-host

/subsystem=webservices:write-attribute\(name=wsdl-host,value=docker.loc\)

Добавление источников данных (разные СУБД)

Datasource Connection URL
IBM DB2 jdbc:db2://SERVER_NAME:PORT/DATABASE_NAME
MariaDB jdbc:mariadb://SERVER_NAME:PORT/DATABASE_NAME
Microsoft SQL Server jdbc:sqlserver://SERVER_NAME:PORT;DatabaseName=DATABASE_NAME
MySQL jdbc:mysql://SERVER_NAME:PORT/DATABASE_NAME
Oracle jdbc:oracle:thin:@SERVER_NAME:PORT:ORACLE_SID
PostgreSQL jdbc:postgresql://SERVER_NAME:PORT/DATABASE_NAME
Sybase jdbc:sybase:Tds:SERVER_NAME:PORT/DATABASE_NAME

Удаление настроек по умолчанию

При конфигурировании Wildfly можно (при переводе системы в промышленную эксплуатацию - рекомендуется) удалить пример источника данных и страницу-приветствие. Для этого в файле standalone.xml необходимо убрать (либо закомментировать) следующие объекты:

                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
             <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
                    <location name="/" handler="welcome-content"/>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>

Добавление сертификатов корпоративных УЦ

java keytool – с его помощью установить корневой сертификат в keystore. Если есть промежуточные, то их тоже.

java keystore password по умолчанию – “changeit”.

Примеры инструкций:


Как минимум в CN сертификата должен быть адрес, по которому происходит обращение к серверу (DNS или IP). Если этого будет недостаточно, тогда добавить в SAN сертификата.

Включение и конфигурирование HTTPS

Добавление сертификата

Для добавления/обновления сертификата необходимо выполнить следующие действия:

  1. Составить цепочку сертификатов.
    Из файлов сертификатов в формате PEM (Base64) составить цепочку путём соединения в новом файле с расширением crt, например fullchain.crt. Для этого в новый файл с помощью текстового редактора нужно добавить сертификат корневого УЦ, промежуточных, и собственно сертификат сервера.
  2. Создать контейнер формата pkcs12:
    openssl pkcs12 -export -in fullchain.crt -inkey private_key.key -out keycontainer.p12
    
    при экспорте следует задать пароль <password> для приватного ключа.
  3. Создать JKS-контейнер из PKCS12:
    keytool -importkeystore -srckeystore keycontainer.p12 \
            -srcstoretype PKCS12 \
            -destkeystore <container-name>.jks \
            -deststoretype JKS
    
    при импорте указываем <password>, при экспорте указываем пароль к контейнеру.
  4. Скопировать <container-name>.jks например в /opt/wildfly/standalone/configuration/ (для Linux), либо в C:\wildfly\standalone\configuration\ (для Windows).
  5. Имя файла-контейнера (относительный путь от директории configuration) и пароли указать в файле /opt/wildfly/standalone/configuration/standalone.xml (для Linux), либо в C:\wildfly\standalone\configuration\standalone.xml (для Windows), для WildFly 25 и выше, :
                <tls>
                    <key-stores>
                        <key-store name="applicationKS">
                            <credential-reference clear-text="ПАРОЛЬ К КОНТЕЙНЕРУ"/>
                            <implementation type="JKS"/>
                            <file path="ИМЯ ФАЙЛА-КОНТЕЙНЕРА.jks" relative-to="jboss.server.config.dir"/>
                        </key-store>
                    </key-stores>
                    <key-managers>
                        <key-manager name="applicationKM" key-store="applicationKS" generate-self-signed-certificate-host="localhost">
                            <credential-reference clear-text="ПАРОЛЬ К ПРИВАТНОМУ КЛЮЧУ"/>
                        </key-manager>
                    </key-managers>
                    <server-ssl-contexts>
                        <server-ssl-context name="applicationSSC" key-manager="applicationKM"/>
                    </server-ssl-contexts>
                </tls>
    
    До версии 25, в объекте keystore (если АЛИАС не был задан, по умолчанию устанавливается значение "1"):
                <security-realm name="ApplicationRealm">
                    <server-identities>
                        <ssl>
                            <keystore path="ИМЯ ФАЙЛА-КОНТЕЙНЕРА.jks" relative-to="jboss.server.config.dir" keystore-password="ПАРОЛЬ К КОНТЕЙНЕРУ" alias="АЛИАС" key-password="ПАРОЛЬ К ПРИВАТНОМУ КЛЮЧУ" generate-self-signed-certificate-host="localhost"/>
                        </ssl>
                    </server-identities>
    
  6. Перезапустить сервис WildFly.
  7. Проверить подключение:
    openssl s_client -connect <server-name>:8443
    
    Verify Result должен быть 0.

Отключение HTTP порта (8080)

В работе
Предупреждение! Приведённый ниже порядок действий применим для приложений, не публикующих WSDL-схему. Для приложений с WSDL потребуется дополнительная донастройка.

Для того, чтобы на сервере PCIS External отключить доступ к REST-интерфейсу по порту 8080 необходимо в файле /opt/wildfly/standalone/configuration/standalone.xml (для Linux), либо в C:\wildfly\standalone\configuration\standalone.xml (для Windows) (перед этим лучше сделать его резервную копию) в блоке <server name="default-server"> удалить строку

<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>

В блоке <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> удалить строку:

<socket-binding name="http" port="${jboss.http.port:8080}"/>

Изменить параметр <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> следующим образом (изменить значение connector-ref с default на https):

<http-connector name="http-remoting-connector" connector-ref="https" security-realm="ApplicationRealm"/>

Переключение публикации схемы на HTTPS

Для того, чтобы, располагающаяся в WSDL, ссылка на схему была также корректна, необходимо в <subsystem xmlns="urn:jboss:domain:webservices:2.0"> добавить (заменив значения wsdl-host и, при необходимости, wsdl-port и wsdl-secure-port на необходимые) следующее:

            <wsdl-host>yoursite.com</wsdl-host>
            <wsdl-port>8080</wsdl-port>
            <wsdl-secure-port>8443</wsdl-secure-port>
            <wsdl-uri-scheme>https</wsdl-uri-scheme>

Пример результата:

<subsystem xmlns="urn:jboss:domain:webservices:2.0">
            <wsdl-host>paycontrol.org</wsdl-host>
            <wsdl-port>8080</wsdl-port>
            <wsdl-secure-port>8443</wsdl-secure-port>
            <wsdl-uri-scheme>https</wsdl-uri-scheme>
            <endpoint-config name="Standard-Endpoint-Config"/>
            <endpoint-config name="Recording-Endpoint-Config">
                <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
                </pre-handler-chain>
            </endpoint-config>
            <client-config name="Standard-Client-Config"/>
        </subsystem>

Указание определённых стандартов защиты и алгоритмов

Для выбора стандарта защиты HTTPS, только, например, TLS 1.2, нужно в объект https-listener объекта <subsystem xmlns="urn:jboss:domain:undertow:X.X"> добавить, enabled-protocols="TLSv1.2".

Для выбора определённых криптографических алгоритмов, необходимо их указать в объекте https-listener объекта <subsystem xmlns="urn:jboss:domain:undertow:X.X">. Например, для запрета режимов работы без использования алгоритмов Диффи-Хеллмана, нужно добавить enabled-cipher-suites="ALL:!kRSA".

Пример:

<subsystem xmlns="urn:jboss:domain:undertow:1.2">
    <server name="default-server">
        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true" enabled-cipher-suites="ALL:!kRSA" enabled-protocols="TLSv1.2"/>
    </server>
</subsystem>

https://security.stackexchange.com/questions/145855/how-to-enforce-perfect-forward-secrecy-using-jvm-properties

https://www.openssl.org/docs/manmaster/man1/ciphers.html

Включение дополнительных заголовков

Для включения дополнительных HTTP заголовков необходимо в файл

  • Linux:
    /opt/wildfly/standalone/configuration/standalone.xml
  • Windows:
    C:\wildfly\standalone\configuration\standalone.xml
  1. добавить фильтры в раздел <subsystem xmlns="urn:jboss:domain:undertow:X.X"> добавив блок (при его отсутствии) <filters></filters> следующего содержания:
                <filters>
                    <response-header name="transport-security" header-name="Strict-Transport-Security" header-value="max-age=31536000"/>
                    <response-header name="x-frame-options" header-name="X-Frame-Options" header-value="DENY"/>
                    <response-header name="x-content-type-options" header-name="X-Content-Type-Options" header-value="nosniff"/>
                    <response-header name="Content-Security-Policy" header-name="Content-Security-Policy" header-value="default-src 'self'"/>
                </filters>
    
  2. добавить ссылки на эти фильтры в раздел <subsystem xmlns="urn:jboss:domain:undertow:X.X"> в <server name="default-server"> в <host name="default-host" alias="localhost"> включив следующие строки:
                        <filter-ref name="transport-security"/>
                        <filter-ref name="x-frame-options"/>
                        <filter-ref name="x-content-type-options"/>
                        <filter-ref name="Content-Security-Policy"/>
    

Пример:

<subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true" enabled-cipher-suites="ALL:!kRSA" enabled-protocols="TLSv1.2"/>
        <host name="default-host" alias="localhost">
            <http-invoker security-realm="ApplicationRealm"/>
            <filter-ref name="transport-security"/>
            <filter-ref name="x-frame-options"/>
            <filter-ref name="x-content-type-options"/>
            <filter-ref name="Content-Security-Policy"/>
        </host>
    </server>
    <servlet-container name="default">
        <jsp-config/>
        <websockets/>
    </servlet-container>
    <filters>
        <response-header name="transport-security" header-name="Strict-Transport-Security" header-value="max-age=31536000"/>
        <response-header name="x-frame-options" header-name="X-Frame-Options" header-value="DENY"/>
        <response-header name="x-content-type-options" header-name="X-Content-Type-Options" header-value="nosniff"/>
        <response-header name="Content-Security-Policy" header-name="Content-Security-Policy" header-value="default-src 'self'"/>
    </filters>
</subsystem>

Изменение номера порта

В работе
Предупреждение! ОС Linux не позволяет сервисам работающим не от имени root использовать порты с номерами ниже 1024. Для использования портов ниже 1024 необходимо выполнять трансляцию, например с помощью netfilter (iptables/firewalld).

Для изменения номера порта необходимо в файле /opt/wildfly/standalone/configuration/standalone.xml (Linux) или в C:\wildfly\standalone\configuration\standalone.xml (Windows), в блоке

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

в нужном (для http, либо https) параметре

<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>

изменить номер используемого порта.

После изменения номера порта, службу WildFly необходимо перезапустить.

При использовании «сервером» стандартных портов (80 для HTTP или 443 для HTTPS), при установке параметров настроек «клиента» для подключения к «серверу», номер порта в адресе дополнительно указывать не рекомендуется во избежании проблем, т.к. в этих случаях, согласно RFC2616 используется порт по умолчанию. При дополнительном указании в адресе порта по умолчанию бывали случаи возникновения проблем подключения.

Приведённые ниже примеры описаны для протокола HTTP. При использовании HTTPS, необходимо также скорректировать название используемого протокола в адресе подключения.

Изменение порта PCS

При изменении порта для подключения к PCS, необходимо:

Для изменения номера порта для обращения к PCS, в настройках PCIS External в файле /opt/wildfly/bin/standalone.conf (Linux) или C:\opt\wildfly\bin\standalone.conf.bat (Windows), в строке

JAVA_OPTS="$JAVA_OPTS -Dpcservice.endpoint=http://localhost:8080/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"

в параметре -Dpcservice.endpoint=http://<HOSTNAME>:<PORT>/ws/PayControlServiceV3?wsdl установить новое значение <PORT>.

Изменение порта PCIS Internal

Для изменения порта для подключения к PCIS Internal необходимо в БД PCS выполнить следующий запрос:

update pc_system set pc_is_internal_url='http://<HOSTNASME>:<PORT>/wsis/PayControlInteractionService?wsdl' where systemid='XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';

где

  • <HOSTNASME> - имя хоста PCIS Internal;
  • <PORT> новое значение порта;
  • XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - UUID идентификатор прикладной системы.

Допускается выполнять запрос к БД PCS на обновление адреса PCIS Internal без указания systemid, в случае, если подключена только одна прикладная система, или необходимо обновить адрес PCIS Internal для всех прикладных систем.

После изменения номера порта, службу wildfly необходимо перезапустить.

Изменение порта PCIS External

В работе
Предупреждение! При изменении порта PCIS External мобильное приложение потеряет возможность подключения к серверу PayControl до тех пор, пока пользователю мобильного приложения не будет перевыпущен ключ с новым адресом подключения к серверу.


В работе
Предупреждение! Изменение порта, на котором сервер PCIS External ожидает подключения не всегда ведёт к изменению порта назначения, который используется мобильным приложением для доступа к серверу PayControl. Такая ситуация, например, может возникнуть, если перед сервером PCIS External со стороны сети Интернет установлено оборудование/ПО, выполняющее трансляцию сетевых портов.

При изменении порта PCIS External необходимо в БД PCS выполнить следующий запрос:

update pc_system set pc_is_external_url='http://<HOSTNASME>:<PORT>/PayControl-interaction-rest/' where systemid='XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';

где

  • <HOSTNASME> - имя хоста PCIS External, используемое мобильными устройствами для доступа к серверу PayControl;
  • <PORT> новое значение порта;
  • XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - UUID идентификатор прикладной системы.

Допускается выполнять запрос к БД PCS на обновление адреса PCIS External без указания systemid, в случае, если подключена только одна прикладная система, или необходимо обновить адрес PCIS External для всех прикладных систем.

После изменения номера порта, службу wildfly необходимо перезапустить.

Валидация подключения

PostgreSQL

    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
    </validation>

Oracle

    <validation>
        <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>10000</background-validation-millis>
    </validation>

MS SQL

    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
    </validation>

Журналирование

Доступ к данным журнала

Журнал работы сервера PayControl записываются общий лог функционирования Wildfly.

Файлы журналов за текущий день доступны по следующему пути:

  • Linux:
    /opt/wildfly/standalone/log/server.log
  • Windows:
    C:\wildfly\standalone\log\server.log

Для просмотра журнала за другие дни, нужно добавить к имени файла требуемую дату в формате server.log.YYYY-MM-DD

Включение журналирования SOAP-вызовов

Для включения расширенного логирования необходимо:

  1. Остановить службу wildfly.
  2. Добавить после блока <extensions> ... </extensions> в файл
    • Linux:
      /opt/wildfly/standalone/configuration/standalone.xml
    • Windows:
      C:\wildfly\standalone\configuration\standalone.xml
    следующий блок:
        <system-properties>
            <property name="org.apache.cxf.logging.enabled" value="pretty"/>
        </system-properties>
    
  3. Запустить службу wildfly.

Направление логов Wildfly в Kafka

Исходник https://developer.jboss.org/docs/DOC-56423. Основное отличие - добавление <module name="com.fasterxml.jackson.core.jackson-databind"/> в зависимости модуля org.apache.kafka.clients.

Модули

Файлы модулей можно загрузить с https://mvnrepository.com/

org.apache.kafka.clients

Создать файл /opt/wildfly/modules/system/layers/base/org/apache/kafka/clients/main/module.xml с содержанием

<?xml version="1.0" encoding="UTF-8"?>
<module name="org.apache.kafka.clients" xmlns="urn:jboss:module:1.8">
    <resources>
        <resource-root path="kafka-clients-2.6.0.jar"/>
        <resource-root path="snappy-java-1.1.8.2.jar"/>
        <resource-root path="lz4-java-1.7.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="org.slf4j"/>
        <module name="com.fasterxml.jackson.core.jackson-databind"/>
    </dependencies>
</module>

и добавить в директорию указанные в блоке resources файлы.

org.apache.kafka.log4jappender

Создать файл /opt/wildfly/modules/system/layers/base/org/apache/kafka/log4jappender/main/module.xml с содержанием

<?xml version="1.0" encoding="UTF-8"?>
<module name="org.apache.kafka.log4jappender" xmlns="urn:jboss:module:1.8">
    <resources>
        <resource-root path="kafka-log4j-appender-2.6.0.jar"/>
        <resource-root path="slf4j-log4j12-1.7.30.jar"/>
    </resources>
    <dependencies>
        <module name="org.slf4j"/>
        <module name="org.apache.kafka.clients" />
        <module name="org.jboss.log4j.logmanager" />
    </dependencies>
</module>

и добавить в директорию указанные в блоке resources файлы.

org.apache.log4j

Добавить модуль log4jappender в качестве зависимости в существующий org.apache.log4j модуль:

<module name="org.apache.log4j" xmlns="urn:jboss:module:1.6">

    ...

    <dependencies>

        ...

        <module name="org.apache.kafka.log4jappender" export="true"/>

    </dependencies>

</module>

org.jboss.as.standalone

Указать в имеющемся модуле org.jboss.as.standalone в качестве зависимости модуль org.apache.kafka.clients.

<module name="org.jboss.as.standalone" xmlns="urn:jboss:module:1.6">

    ...

    <dependencies>

        ...

        <module name="org.apache.kafka.clients" />

    </dependencies>

</module>

Хэндлеры

Необходимо добавить перечисленные ниже хэндлеры в файл standalone.xml в блок <subsystem xmlns="urn:jboss:domain:logging:8.0">

kafka

            <custom-handler name="kafka" class="org.apache.kafka.log4jappender.KafkaLog4jAppender" module="org.apache.log4j">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <properties>
                    <property name="brokerList" value="localhost:9092"/>
                    <property name="topic" value="out-topic"/>
                </properties>
            </custom-handler>

async-kafka-wrapper

            <async-handler name="async-kafka-wrapper">
                <level name="ALL"/> 
                <queue-length value="1024"/> 
                <overflow-action value="block"/> 
                <subhandlers> 
                    <handler name="kafka"/> 
                </subhandlers> 
            </async-handler>

Включение хэндлера

В блок <handlers> добавить <handler name="async-kafka-wrapper"/>

Проблемы и способы их устранения

Очень медленный старт через standalone.sh (каждый этап скрипта запуска - с большими задержками). Система отправляет сигнал на остановку сервиса

Вероятная проблема - неверные настройки DNS сервера.
Решение:Необходимо скорректировать настройки DNS.
Проблема обнаружилась 2018-07-27 при развёртывании у заказчика. A.bursakov (обсуждение) 19:56, 1 августа 2018 (MSK)

Не происходит «биндинг» IP-адреса адаптера

Вероятная проблема - отсутствие PTR-записи на DNS-сервере, или неправильная работа службы DNS.
Решение: Добавить в файл opt/wildfly/bin/standalone.conf (Linux) или C:\opt\wildfly\bin\standalone.conf.bat (Windows), в переменную JAVA_OPTS параметр -Djboss.bind.address=0.0.0.0
Проблема проявилась на тестовом Windows-сервере A.bursakov (обсуждение) 19:56, 1 августа 2018 (MSK)

Частое появление WARNING в логе

Предупреждения в логе вида:

WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default task-1) Interceptor for {http://ws.safetech.ru/PayControlV3/}PayControlServiceV3 has thrown exception, unwinding now: org.apache.cxf.binding.soap.SoapFault: Error writing to XMLStreamWriter.
Caused by: com.ctc.wstx.exc.WstxIOException: UT010029: Stream is closed
Caused by: java.io.IOException: UT010029: Stream is closed
WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default task-1) Interceptor for {http://ws.safetech.ru/PayControlV3/}PayControlServiceV3 has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: Could not send Message.
Caused by: java.io.IOException: Broken pipe

Могут быть вызваны системой мониторинга, которая для проверки того, что сервер доступен, устанавливает соединение и обрывает его получив лишь только header.

Для отключения предупреждений о непредвиденном закрытии соединения необходимо в файл /opt/wildfly/standalone/configuration/standalone.xml в блок

<profile>
    <subsystem xmlns="urn:jboss:domain:logging:X.X">
       ... 
    </subsystem>
</profile>

добавить:

<!-- to prevent warnings on unsuspicious connection close -->
<logger category="org.apache.cxf.phase.PhaseInterceptorChain">
      <level name="ERROR"/>
</logger>

INFO: Disabling contextual LOB creation as createClob() method threw error

Иногда смущает появление в журнале события, из-за присутствия в его составе слова "error":

   INFO  [org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl] (ServerService Thread Pool -- 64) HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException 

Для отключения этого сообщения необходимо установить hibernate.temp.use_jdbc_metadata_defaults=false в файл persistence.xml, располагающийся внутри модуля сервера следующим образом:

       <properties>
           ...
           <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
           ...
       </properties>

Wildfly не стартует как служба и нет логов

Возможные проблемы:

  • Некорректные права на директории/файлы в /opt/wildfly.
    chown -RHv wildfly:wildfly /opt/wildfly
    
  • Проблемы с определением необходимой Java. Для восстановления необходимо выполнить
    sudo update-alternatives --config java