Java Jboss 6.4 Infinispan 8.2和JGroups-ClassNotFoundException

Java Jboss 6.4 Infinispan 8.2和JGroups-ClassNotFoundException,java,jboss,jboss6.x,infinispan,jgroups,Java,Jboss,Jboss6.x,Infinispan,Jgroups,我需要Infinispan 8+的一些功能。因此,我用最新的Infinispan pom更新了我的公司应用程序pom.xml 这非常简单,但应用程序使用jgroups(或默认配置/default-jgroups-udp.xml中的默认配置-此位置与infinispan的早期版本不同)。默认版本有一些参数(以及Jgroups版本3.6中的XSD)——因此我也将Jgroups升级到了3.6.8.Final,因为它看起来是预期的版本(并且是在infinispan 8.2的默认配置中没有抱怨未知参数的版

我需要Infinispan 8+的一些功能。因此,我用最新的Infinispan pom更新了我的公司应用程序pom.xml

这非常简单,但应用程序使用jgroups(或默认配置/default-jgroups-udp.xml中的默认配置-此位置与infinispan的早期版本不同)。默认版本有一些参数(以及Jgroups版本3.6中的XSD)——因此我也将Jgroups升级到了3.6.8.Final,因为它看起来是预期的版本(并且是在infinispan 8.2的默认配置中没有抱怨未知参数的版本)

因此,pom如下所示:

         <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>

org.jgroups
JGroup
3.6.8.最终版本
org.infinispan
英菲尼斯潘岩芯
8.2.0.1最终版本
无论如何,这个应用程序在使用带有Jetty的spring引导时没有问题。我很确定它会在任何应用服务器上启动

但我别无选择,只能在JBoss6.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.infinispan.commons.CacheException:无法在JGroupsTransport类型的对象上调用方法public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start()
位于org.infinispan.commons.util.ReflectionUtil.InvokeAccessly(ReflectionUtil.java:172)
位于org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:859)
位于org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:628)
位于org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:617)
位于org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:542)
位于org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:234)
... 141更多
原因:java.lang.ExceptionInInitializeError
位于org.jgroups.conf.XmlConfigurator(XmlConfigurator.java:35)
位于org.jgroups.conf.ConfiguratorFactory.getStackConfigurator(ConfiguratorFactory.java:62)
在org.jgroups.JChannel上(JChannel.java:129)
位于org.infinispan.remoting.transport.jgroups.JGroupsTransport.buildChannel(JGroupsTransport.java:419)
位于org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannel(JGroupsTransport.java:320)
位于org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannelAndRPCDispatcher(JGroupsTransport.java:366)
位于org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:190)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.infinispan.commons.util.ReflectionUtil.InvokeAccessly(ReflectionUtil.java:168)
... 146多
原因:java.lang.RuntimeException:java.lang.ClassNotFoundException:org.jboss.as.clustering.jgroups.LogFactory,来自[Module”deployment.mymodule-5.0.0.0-SNAPSHOT.ear.appName.war:main”,来自服务模块加载器]
位于org.jgroups.logging.LogFactory(LogFactory.java:31)
... 158多
原因:java.lang.ClassNotFoundException:org.jboss.as.clustering.jgroups.LogFactory,来自[Module”deployment.mymodule-5.0.0.0-SNAPSHOT.ear.appName.war:main”,来自服务模块加载器]
位于org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
位于org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(未知源)
在org.jgroups.logging.LogFactory.(LogFactory.java:28)
... 158多
我的猜测是,org.jgroups.logging.LogFactory以某种方式发现它正在Jboss上运行,并尝试使用org.Jboss.as.clustering.jgroups.LogFactory,但这个版本的Jboss没有。(服务器目录EAP-6.4.0\modules\system\layers\base\org\jgroups\main包含jgroups版本3.2.X)

在JBoss6.4中是否有使用此jgroups版本(以及Infinispan 8.2)的演练

这是(应用程序)一个ear文件,因此我可以操作jboss-deployment-structure.xml文件,但到目前为止,我只排除了jboss原始JGroup,这没有帮助

 <exclusions>
        <module name="org.jgroups"/>
 </exclusions>

这是Infinispan 8+EAP 6.4组合的当前错误。原因正如@Flavius在评论中所说的那样。目前正在讨论如何修复它,但它很可能在EAP 6.4中修复。我相信很快就会完成的

我只能给你一个工作的变通办法

  • 使用WildFly-问题不再存在
  • 有点讨厌的解决办法,但它是有效的:
  • 调用
    System.clearProperty(“jgroups.logging.log\u factory\u class”)
  • 在部署中包括infinispan bom中指定版本的JBoss日志记录(例如,在pom.xml中添加JBoss日志记录Maven依赖项)
  • 为您的部署提供
    jboss部署结构.xml
    ,其中不包括服务器的jboss日志记录,请参见以下内容:

  • 这是Infinispan 8+EAP 6.4组合的当前错误。原因正如@Flavius在评论中所说的那样。目前正在讨论在哪里修复它,但它将继续运行
        <jboss-deployment-structure>
            <deployment>
                <exclusions>
                    <module name="org.jboss.logging" />
                </exclusions>
            </deployment>
        </jboss-deployment-structure>