Использование Log4j2 2.11.1 с Wildfly 14.0.1, OpenJDK 11. У нас есть пользовательское клиентское приложение OSGi, которое регистрирует как приложение для консоли, так и приложение JMS для отправки событий регистрации на сервер Wildfly.
До Log4j2 мы программно вставляли JMS-приложение в нашу конфигурацию Log4j, которая работала нормально. В этом действительно не было необходимости, поэтому с нашим недавним обновлением до Log4j2 я пытаюсь использовать конфигурацию log4j2.xml, чтобы справиться со всем этим и упростить наш код.
У нас есть клиентский класс, который успешно подключается к нашей Wildfly JMS и получает сообщения, используя следующее:
topicConnFacName: com.rsc.mmpl.TopicConnectionFactory
initialContextFacName: org.jboss.naming.remote.client.InitialContextFactory
URL: http-remoting://JDEVDWS166:9090
Topic name: com.rsc.mmpl.MsgHndlrTopic
Моя конфигурация log4j2.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%p %d{yyyy-MMM-dd HH:mm:ss.SSS} %c{3}[line %L] - %m%n"/>
</Console>
<JMS name="jmsQueue" destinationBindingName="com.rsc.mmpl.MsgHndlrTopic"
factoryName="org.jboss.naming.remote.client.InitialContextFactory"
factoryBindingName="com.rsc.mmpl.TopicConnectionFactory"
ignoreExceptions="false"
providerURL="http-remoting://JDEVDWS166:9090">
<JsonLayout properties="true" complete="true"/>
</JMS>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="jmsQueue"/>
</Root>
</Loggers>
</Configuration>
Если я закомментирую мой JMS Appender, он будет работать нормально, поэтому я знаю, что мой log4j настроен правильно с точки зрения пути к классам (ядра jar log4j и api, а также файлы jaxon и jboss-client.jar все включены общий путь к классам).
Однако при запуске моего клиентского приложения с JMS Appender я получаю следующую ошибку:
[stderr] Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.jboss.remoting3.ConfigurationEndpointSupplier$Holder
[stderr] at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:84)
[stderr] at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:40)
[stderr] at org.wildfly.common.context.ContextManager.getPrivileged(ContextManager.java:286)
[stderr] at org.jboss.remoting3.Endpoint.getCurrent(Endpoint.java:81)
[stderr] at org.wildfly.naming.client.remote.RemoteNamingProviderFactory.getEndpoint(RemoteNamingProviderFactory.java:49)
[stderr] at org.wildfly.naming.client.remote.RemoteNamingProviderFactory.supportsUriScheme(RemoteNamingProviderFactory.java:40)
[stderr] at org.wildfly.naming.client.WildFlyRootContext.getProviderContext(WildFlyRootContext.java:784)
[stderr] at org.wildfly.naming.client.WildFlyRootContext.lookup(WildFlyRootContext.java:140)
[stderr] at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
[stderr] at org.apache.logging.log4j.core.net.JndiManager.lookup(JndiManager.java:172)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsManager.createConnection(JmsManager.java:323)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsManager.<init>(JmsManager.java:250)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsManager.<init>(JmsManager.java:54)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsManager$JmsManagerFactory.createManager(JmsManager.java:130)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsManager$JmsManagerFactory.createManager(JmsManager.java:125)
[stderr] at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsAppender$Builder.build(JmsAppender.java:118)
[stderr] at org.apache.logging.log4j.core.appender.mom.JmsAppender$Builder.build(JmsAppender.java:50)
[stderr] at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
[stderr] at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
[stderr] at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
[stderr] at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:619)
[stderr] at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:636)
[stderr] at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
[stderr] at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)
[stderr] at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
[stderr] at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
[stderr] at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:648)
[stderr] at com.rsc.delphi.logger.log4j.Log4jLogger.<init>(Unknown Source)
[stderr] ... 20 more
Глядя на источник Holder, кажется, что что-то не так со статическим блоком там, но я не могу понять, на что я способен.
Есть ли способ получить больше информации, чтобы выяснить, что здесь не так? Опять же, программное подключение к моей Wildfly JMS в порядке, похоже, проблема с Log4j2.
Заранее спасибо.