Мне нужны некоторые функции от Infinispan 8+. Поэтому я обновил свое приложение pom.xml для своей компании с новейшим Infinispan pom.Jboss 6.4 Infinispan 8.2 и JGroups - ClassNotFoundException
Это было довольно просто, но приложение использует jgroups (или его конфигурацию по умолчанию в default-configs/default-jgroups-udp.xml - это место отличается от предыдущих версий infinispan). В версиях по умолчанию есть некоторые параметры (и XSD из Jgroups версии 3.6), поэтому я также столкнулся с jgroups до 3.6.8.Final, поскольку он выглядит как предполагаемая версия (и версия, которая не жалуется на неизвестные параметры в конфигурации по умолчанию в infinispan 8.2)
так П является следующим:
<dependency>
<groupId>org.jgroups</groupId>
<artifactId>jgroups</artifactId>
<version>3.6.8.Final</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-core</artifactId>
<version>8.2.0.Final</version>
</dependency>
во всяком случае - это приложение запускается без каких-либо проблем с использованием пружинной загрузки с Jetty. Я уверен, что он начнется на любом сервере приложений.
Но тогда у меня нет выбора, кроме как запустить его на JBoss 6.4. Там я получил исключение с участием некоторых jboss.as классов (это своего рода неожиданным) во время развертывания:
Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:172)
at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:859)
at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:628)
at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:617)
at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:542)
at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:234)
... 141 more
Caused by: java.lang.ExceptionInInitializerError
at org.jgroups.conf.XmlConfigurator.<clinit>(XmlConfigurator.java:35)
at org.jgroups.conf.ConfiguratorFactory.getStackConfigurator(ConfiguratorFactory.java:62)
at org.jgroups.JChannel.<init>(JChannel.java:129)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.buildChannel(JGroupsTransport.java:419)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannel(JGroupsTransport.java:320)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannelAndRPCDispatcher(JGroupsTransport.java:366)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
... 146 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.jboss.as.clustering.jgroups.LogFactory from [Module "deployment.mymodule-5.0.0.0-SNAPSHOT.ear.appName.war:main" from Service Module Loader]
at org.jgroups.logging.LogFactory.<clinit>(LogFactory.java:31)
... 158 more
Caused by: java.lang.ClassNotFoundException: org.jboss.as.clustering.jgroups.LogFactory from [Module "deployment.mymodule-5.0.0.0-SNAPSHOT.ear.appName.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.jgroups.logging.LogFactory.<clinit>(LogFactory.java:28)
... 158 more
Я предполагаю, что org.jgroups.logging.LogFactory как-то обнаруживает, что работает на Jboss и пытается использовать org.jboss.as.clustering.jgroups.LogFactory, но у этой версии Jboss ее нет. (каталог сервера EAP-6.4.0 \ modules \ system \ layers \ base \ org \ jgroups \ main содержит jgroups version 3.2.X).
Есть ли какой-либо способ использовать эту версию jgroups (и, таким образом, Infinispan 8.2) в Jboss 6.4?
Это (приложение) файл уха, поэтому я могу манипулировать файлом jboss-deployment-structure.xml, но до сих пор я только пришел с исключением исходных jgroups Jboss, и это не помогло.
<exclusions>
<module name="org.jgroups"/>
</exclusions>
JGroups Соблюдает недвижимости 'JGroups. logging.log_factory_class' - можете ли вы установить это на 'org.jgroups.logging.Log4J2LogImpl'? (это отключает интеграцию в протоколы EAP и журналы для того, что там есть log4j2 impl, но это будет отправной точкой ...) –
На самом деле проблема заключается в том, что свойство задано с сервером для внутренней версии JGroups EAP, но его захватывает ваша версия приложения JGroups. Затем приложение JGroups пытается загрузить класс интеграции EAP-JGroups, который не находится в его пути к классам. Таким образом, вы также можете добавить модуль 'org.jgroups.extension' в качестве зависимости, но здесь никаких гарантий нет. –
@Flavius Ok Я смог изменить свойство Log4J2LogImpl, но (мы используем SL4J) У меня есть java.lang.ClassNotFoundException: org.apache.logging.log4j.Level. Мы используем log4j-over-slf4j, поэтому это должно быть доступно. Я распечатал (в коде) Jar, который загружает класс (Level) - оказалось, что это EAP-6.4.0/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss- logmanager-1.1.1.Final-redhat-1.jar. Исключая модуль org.jboss.log4j.logmanager не меняет его. – maslan