我在Wildfly 10.1.0中使用Infinispan-core-8.2.4.Final.jar和jgroups-3.6.7.Final.jar的分布式缓存,但仅在启动时出现异常。

org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport


这是我的jgroups-tcp.xml

<!--
    TCP based stack, with flow control and message bundling. This is usually used when IP
    multicasting cannot be used in a network, e.g. because it is disabled (routers discard multicast).
    Note that TCP.bind_addr and TCPPING.initial_hosts should be set, possibly via system properties, e.g.
    -Djgroups.bind_addr=192.168.0.1 and -Djgroups.tcpping.initial_hosts=192.168.0.1[7810]
    author: Bela Ban
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="urn:org:jgroups"
        xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd">
    <TCP bind_addr="${jgroups.bind_addr:127.0.0.1}"
         bind_port="7800"
         recv_buf_size="${tcp.recv_buf_size:5M}"
         send_buf_size="${tcp.send_buf_size:5M}"
         max_bundle_size="64K"
         max_bundle_timeout="30"
         use_send_queues="true"
         sock_conn_timeout="300"

         timer_type="new3"
         timer.min_threads="4"
         timer.max_threads="10"
         timer.keep_alive_time="3000"
         timer.queue_max_size="500"

         thread_pool.enabled="true"
         thread_pool.min_threads="2"
         thread_pool.max_threads="8"
         thread_pool.keep_alive_time="5000"
         thread_pool.queue_enabled="true"
         thread_pool.queue_max_size="10000"
         thread_pool.rejection_policy="discard"

         oob_thread_pool.enabled="true"
         oob_thread_pool.min_threads="1"
         oob_thread_pool.max_threads="8"
         oob_thread_pool.keep_alive_time="5000"
         oob_thread_pool.queue_enabled="false"
         oob_thread_pool.queue_max_size="100"
         oob_thread_pool.rejection_policy="discard"/>

    <TCPPING async_discovery="true"
             initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7800],localhost[7801]}"
             port_range="10"/>
    <MERGE3  min_interval="10000"
             max_interval="30000"/>
    <FD_SOCK/>
    <FD timeout="10000" max_tries="3" />
    <VERIFY_SUSPECT timeout="1500"  />
    <BARRIER />
    <pbcast.NAKACK2 use_mcast_xmit="false"
                    discard_delivered_msgs="true"/>
    <UNICAST3 />
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                   max_bytes="4M"/>
    <pbcast.GMS print_local_addr="true" join_timeout="2000"
                view_bundling="true"/>
    <MFC max_credits="2M"
         min_threshold="0.4"/>
    <FRAG2 frag_size="60K"  />
    <!--RSVP resend_interval="2000" timeout="10000"/-->
    <pbcast.STATE_TRANSFER/>
</config>


我的infinispan-configs.xml包含

<?xml version="1.0" encoding="UTF-8"?>
<infinispan
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd"
        xmlns="urn:infinispan:config:8.0">
   <jgroups>
      <stack-file name="tcp" path="${jboss.server.config.dir}\jgroups-tcp.xml"/>
   </jgroups>

   <cache-container name="shop">
      <transport stack="tcp"/>
       <distributed-cache name="Customers" mode="SYNC" owners="2">
           <locking acquire-timeout="30000" concurrency-level="100" />
       </distributed-cache>
       <jmx domain="shopcluster" />
   </cache-container>
</infinispan>


从类路径,我是动态地替换所有主机的IP地址或主机名,像这样

set "JAVA_OPTS=%JAVA_OPTS% -Djgroups.bind_addr=HOST-1 -Djgroups.tcpping.initial_hosts=HOST-1[7800],HOST-2[7801] -Djava.net.preferIPv4Stack=true";


请帮助我确定此问题的原因。非常感谢您的帮助。提前致谢。

以下是完整的堆栈跟踪:

06:25:08,700 ERROR [com.shop.cache.ShopCacheManager] (ServerService Thread Pool -- 96) Failed to get cache: : org.infinispan.manager.EmbeddedCacheManagerStartupException: 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.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:249)
        at org.infinispan.manager.DefaultCacheManager.start(DefaultCacheManager.java:663)
        at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:310)
        at org.infinispan.jcache.embedded.JCacheManager.<init>(JCacheManager.java:70)
        at org.infinispan.jcache.embedded.JCachingProvider.createCacheManager(JCachingProvider.java:46)
        at org.infinispan.jcache.AbstractJCachingProvider.getCacheManager(AbstractJCachingProvider.java:67)
        at org.infinispan.jcache.AbstractJCachingProvider.getCacheManager(AbstractJCachingProvider.java:80)
        at com.shop.cache.ShopCacheManager.getShopCache(ShopCacheManager.java:51)
        at com.shop.cache.ShopCacheManager.getShopCache(ShopCacheManager.java:29)
        at com.shop.security.SecurityCacheManager.ALL_SHOPS(SecurityCacheManager.java:35)
        at com.shop.security.SecurityCheck.<init>(SecurityCheck.java:200)
        at com.shop.security.SecurityUserAdminCheck.<init>(SecurityUserAdminCheck.java:42)
        at com.shop.security.SecStartup.initializeSecurityObjects(SecStartup.java:53)
        at com.shop.security.SecStartup.postStart(SecStartup.java:35)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptor.java:96)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doLifecycleInterception(Jsr299BindingsInterceptor.java:114)
        at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:103)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437)
        at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
        at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.weld.injection.WeldInjectionInterceptor.processInvocation(WeldInjectionInterceptor.java:53)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ee.component.AroundConstructInterceptorFactory$1.processInvocation(AroundConstructInterceptorFactory.java:28)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.weld.injection.WeldInterceptorInjectionInterceptor.processInvocation(WeldInterceptorInjectionInterceptor.java:56)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.weld.ejb.Jsr299BindingsCreateInterceptor.processInvocation(Jsr299BindingsCreateInterceptor.java:100)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275)
        at org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:349)
        at org.jboss.as.ejb3.tx.LifecycleCMTTxInterceptor.processInvocation(LifecycleCMTTxInterceptor.java:66)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.weld.injection.WeldInjectionContextInterceptor.processInvocation(WeldInjectionContextInterceptor.java:43)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
        at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
        at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161)
        at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:134)
        at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:88)
        at org.jboss.as.ejb3.component.singleton.SingletonComponent.getComponentInstance(SingletonComponent.java:124)
        at org.jboss.as.ejb3.component.singleton.SingletonComponent.start(SingletonComponent.java:138)
        at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:54)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
        at org.jboss.threads.JBossThread.run(JBossThread.java:320)
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:236)
        ... 64 more
Caused by: org.infinispan.commons.CacheException: Unable to start JGroups Channel
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java:202)
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:191)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
        ... 69 more
Caused by: java.lang.Exception: connecting to channel "ISPN" failed
        at org.jgroups.JChannel._connect(JChannel.java:570)
        at org.jgroups.JChannel.connect(JChannel.java:294)
        at org.jgroups.JChannel.connect(JChannel.java:279)
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java:200)
        ... 75 more
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessError: tried to access class org.infinispan.remoting.transport.jgroups.JGroupsTransport$NotifyViewChange from class org.infinispan.remoting.transport.jgroups.JGroupsTransport
        at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:669)
        at org.jgroups.JChannel.up(JChannel.java:738)
        at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030)
        at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:146)
        at org.jgroups.protocols.FRAG2.up(FRAG2.java:165)
        at org.jgroups.protocols.FlowControl.up(FlowControl.java:390)
        at org.jgroups.protocols.pbcast.GMS.installView(GMS.java:730)
        at org.jgroups.protocols.pbcast.ClientGmsImpl.becomeSingletonMember(ClientGmsImpl.java:278)
        at org.jgroups.protocols.pbcast.ClientGmsImpl.joinInternal(ClientGmsImpl.java:87)
        at org.jgroups.protocols.pbcast.ClientGmsImpl.join(ClientGmsImpl.java:41)
        at org.jgroups.protocols.pbcast.GMS.down(GMS.java:1082)
        at org.jgroups.protocols.FlowControl.down(FlowControl.java:347)
        at org.jgroups.protocols.FRAG2.down(FRAG2.java:136)
        at org.jgroups.protocols.pbcast.STATE_TRANSFER.down(STATE_TRANSFER.java:202)
        at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java:1039)
        at org.jgroups.JChannel.down(JChannel.java:790)
        at org.jgroups.JChannel._connect(JChannel.java:564)
        ... 78 more
Caused by: java.lang.IllegalAccessError: tried to access class org.infinispan.remoting.transport.jgroups.JGroupsTransport$NotifyViewChange from class org.infinispan.remoting.transport.jgroups.JGroupsTransport
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.viewAccepted(JGroupsTransport.java:894)
        at org.jgroups.blocks.MessageDispatcher.handleUpEvent(MessageDispatcher.java:618)
        at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:666)
        ... 94 more

最佳答案

经过将近2周或更长时间的尝试,我终于能够解决此问题。这是一个与依赖性和配置有关的问题。

以下是我所做的更改:-

1.在我使用过的所有项目模块中都添加了jgroups编译时间依赖性。

2.在jboss-deployment-structure.xml文件中,删除了所有与“ org.infinispan”相关的jboss模块相关的依赖项,并为其余模块添加了服务=“ import”

有了这个改变。它开始为我工作

关于java - CacheException:无法对JGroupsTransport类型的对象调用public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53630398/

10-11 03:54