首页 文章

Infinispan不使用指定的JGroups配置文件并抛出异常

提问于
浏览
1

我对使用JGroups和Infinispan相对较新,并且有两个问题:

配置文件infinispan.xml:

<jgroups>
    <stack-file name="configurationFile" path="cache/default-jgroups-tcp.xml"/>
</jgroups>
<threads />
<cache-container default-cache="dist" shutdown-hook="REGISTER">
    <jmx duplicate-domains="true"/> 
    <distributed-cache name="distCache" owners="2" mode="ASYNC" />
</cache-container>

default-jgroups-tcp.xml位于src / main / resource / cache文件夹中 . default-jgroups-tcp.xml的内容是从infinispan-core.jar提供的预配置JGroups文件中复制的 .

在运行infinispan时,我会看到:

INFO  JGroupsTransport - ISPN000088: Unable to use any JGroups configuration mechanisms provided in properties {stackFilePath-configurationFile=cache/default-jgroups-tcp.xml, stack-configurationFile=configurationFile}. Using default JGroups configuration!

然后就会出现异常:

SEVERE: failed setting ip_ttl
java.lang.reflect.InvocationTargetException
    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.jgroups.protocols.UDP.setTimeToLive(UDP.java:339)
    at org.jgroups.protocols.UDP.createSockets(UDP.java:368)
    at org.jgroups.protocols.UDP.start(UDP.java:270)
    at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:965)
    at org.jgroups.JChannel.startStack(JChannel.java:885)
    at org.jgroups.JChannel._preConnect(JChannel.java:547)
    at org.jgroups.JChannel.connect(JChannel.java:282)
    at org.jgroups.JChannel.connect(JChannel.java:273)
    at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java:201)
    at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:192)
    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)
    at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
    at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
    at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
    at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
    at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:221)
    at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:573)
    at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:539)
    at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:416)
    at com.viasat.sng.cache.Manager.getAsyncDistributedCache(Manager.java:43)
    at com.viasat.sng.controller.InfController.<init>(InfController.java:50)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1000)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5231)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5518)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1879)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Method not implemented!
    at java.net.DualStackPlainDatagramSocketImpl.setTimeToLive(Unknown Source)
    ... 69 more

我有两个问题:

1)为什么我的JGroups配置无法使用?我尝试了不同的路径组合,甚至直接指向infinispan-core.jar提供的预配置JGroups文件 .

2)为什么使用默认的JGroups配置会导致抛出java.lang.reflect.InvocationTargetException或者无法设置ip_ttl?

任何帮助或输入将不胜感激,谢谢!

1 回答

  • 3

    2)在Windows上,有两个DatagramSocket实现:DualStackPlainDatagramSocketImpl和TwoStacksPlainDatagramSocketImpl . 第一个(默认情况下在Vista和更高版本上使用)抛出异常 . 第二个确实实现了setTimeToLive() . 所以你需要使用第二个 . 这可以通过两种方式完成:

    设置-Djava.net.preferIPv4Stack = true,或

    使用impl.prefix系统属性(google了解详细信息) .

    1)似乎您的类路径不包含配置文件,您是否尝试过设置绝对值而不是相对值,例如/home/yourhome/config/jgroups-tcp.xml?

    这是wiki的链接:https://github.com/belaban/JGroups/wiki/FAQ

相关问题