Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 在同一jvm中部署的多个WAR中使用cassandra驱动程序时发生jmx错误_Spring Mvc_Tomcat_Cassandra_Datastax Java Driver_Spring Data Cassandra - Fatal编程技术网

Spring mvc 在同一jvm中部署的多个WAR中使用cassandra驱动程序时发生jmx错误

Spring mvc 在同一jvm中部署的多个WAR中使用cassandra驱动程序时发生jmx错误,spring-mvc,tomcat,cassandra,datastax-java-driver,spring-data-cassandra,Spring Mvc,Tomcat,Cassandra,Datastax Java Driver,Spring Data Cassandra,我在同一个tomcat jvm中部署了app1.war和app2.war。这两个应用程序都有自己的上下文xml-app1.xml和app2.xml。 这两个应用程序都包含连接到Cassandra的datastax驱动程序依赖项。它们单独部署时运行良好。但是,当两者都部署在同一个jvm中时,我会在日志中看到以下JMX异常: [DEBUG] [TokenId=] [2015-07-29 20:54:35.177] [DefaultListableBeanFactory] - [Eagerly cac

我在同一个tomcat jvm中部署了app1.war和app2.war。这两个应用程序都有自己的上下文xml-app1.xml和app2.xml。 这两个应用程序都包含连接到Cassandra的datastax驱动程序依赖项。它们单独部署时运行良好。但是,当两者都部署在同一个jvm中时,我会在日志中看到以下JMX异常:

[DEBUG] [TokenId=] [2015-07-29 20:54:35.177] [DefaultListableBeanFactory] - [Eagerly caching bean 'cluster' to allow for resolving potential circular references]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.191] [DefaultListableBeanFactory] - [Invoking afterPropertiesSet() on bean with name 'cluster']
[DEBUG] [TokenId=] [2015-07-29 20:54:35.199] [SystemProperties] - [com.datastax.driver.NEW_NODE_DELAY_SECONDS is undefined, using default value 1]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.199] [SystemProperties] - [com.datastax.driver.NON_BLOCKING_EXECUTOR_SIZE is undefined, using default value 16]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.205] [SystemProperties] - [com.datastax.driver.NOTIF_LOCK_TIMEOUT_SECONDS is undefined, using default value 60]
[WARN ] [TokenId=] [2015-07-29 20:54:35.217] [FrameCompressor] - [Cannot find Snappy class, you should make sure the Snappy library is in the classpath if you intend to use it. Snappy compression
will not be available for the protocol.]
[WARN ] [TokenId=] [2015-07-29 20:54:35.219] [FrameCompressor] - [Cannot find LZ4 class, you should make sure the LZ4 library is in the classpath if you intend to use it. LZ4 compression will not
be available for the protocol.]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.356] [Cluster] - [Starting new cluster with contact points [xxxxx1.com/10.63.162.182:9042, xxxx2.com/10.63.162.177:9042, xxxx3.com/10.63.162.183:9042]]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.556] [JmxReporter] - [Unable to register gauge]
javax.management.InstanceAlreadyExistsException: cluster1-metrics:name=open-connections
        at com.sun.jmx.mbeanserver.Repository.addMBean(Unknown Source) ~[?:1.7.0_45]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(Unknown Source) ~[?:1.7.0_45]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(Unknown Source) ~[?:1.7.0_45]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(Unknown Source) ~[?:1.7.0_45]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(Unknown Source) ~[?:1.7.0_45]
        at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(Unknown Source) ~[?:1.7.0_45]
        at com.codahale.metrics.JmxReporter$JmxListener.onGaugeAdded(JmxReporter.java:494) [metrics-core-3.0.2.jar:3.0.2]
        at com.codahale.metrics.MetricRegistry.notifyListenerOfAddedMetric(MetricRegistry.java:344) [metrics-core-3.0.2.jar:3.0.2]
        at com.codahale.metrics.MetricRegistry.addListener(MetricRegistry.java:187) [metrics-core-3.0.2.jar:3.0.2]
        at com.codahale.metrics.JmxReporter.start(JmxReporter.java:697) [metrics-core-3.0.2.jar:3.0.2]
        at com.datastax.driver.core.Metrics.<init>(Metrics.java:77) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster$Manager.<init>(Cluster.java:1204) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster$Manager.<init>(Cluster.java:1144) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster.<init>(Cluster.java:121) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster.<init>(Cluster.java:108) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:177) [cassandra-driver-core-2.1.4.jar:?]
        at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1109) [cassandra-driver-core-2.1.4.jar:?]
[DEBUG][TokenId=][2015-07-29 20:54:35.177][DefaultListableBeanFactory]-[急切地缓存bean“集群”,以允许解析潜在的循环引用]
[DEBUG][TokenId=][2015-07-29 20:54:35.191][DefaultListableBeanFactory]-[Invoking AfterPropertieSet()(在名为'cluster'的bean上调用]
[DEBUG][TokenId=][2015-07-29 20:54:35.199][SystemProperties]-[com.datastax.driver.NEW\u NODE\u DELAY\u SECONDS未定义,使用默认值1]
[DEBUG][TokenId=][2015-07-29 20:54:35.199][SystemProperties]-[com.datastax.driver.NON_BLOCKING_EXECUTOR_大小未定义,使用默认值16]
[DEBUG][TokenId=][2015-07-29 20:54:35.205][SystemProperties]-[com.datastax.driver.NOTIF\u LOCK\u TIMEOUT\u SECONDS未定义,使用默认值60]
[警告][TokenId=][2015-07-29 20:54:35.217][FrameCompressor]-[找不到Snappy类,如果要使用Snappy库,应确保Snappy库位于类路径中。Snappy compression
将不适用于本协议。]
[WARN][TokenId=][2015-07-29 20:54:35.219][FrameCompressor]-[找不到LZ4类,如果要使用LZ4库,应确保它位于类路径中。LZ4压缩将不可用
可用于议定书。]
[调试][TokenId=][2015-07-29 20:54:35.356][Cluster]-[使用联系人启动新群集[xxxxx 1.com/10.63.162.182:9042,xxxxxx2.com/10.63.162.177:9042,xxxxxx3.com/10.63.162.183:9042]]
[调试][TokenId=][2015-07-29 20:54:35.556][JmxReporter]-[无法注册仪表]
javax.management.InstanceAlreadyExistsException:cluster1度量:名称=打开的连接
在com.sun.jmx.mbeanserver.Repository.addMBean(未知源)~[?:1.7.0_45]
在com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(未知源)~[?:1.7.045]
在com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(未知源)~[?:1.7.045]
在com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(未知源)~[?:1.7.045]
在com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(未知源)~[?:1.7.045]
在com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(未知源)~[?:1.7.045]
在com.codahale.metrics.JmxReporter$JmxListener.ongaugeaded(JmxReporter.java:494)[metrics-core-3.0.2.jar:3.0.2]
在com.codahale.metrics.MetricRegistry.notifyListenerOfAddedMetric(MetricRegistry.java:344)[metrics-core-3.0.2.jar:3.0.2]
在com.codahale.metrics.MetricRegistry.addListener(MetricRegistry.java:187)[metrics-core-3.0.2.jar:3.0.2]
在com.codahale.metrics.JmxReporter.start(JmxReporter.java:697)[metrics-core-3.0.2.jar:3.0.2]
在com.datastax.driver.core.Metrics.(Metrics.java:77)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster$Manager.(Cluster.java:1204)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster$Manager.(Cluster.java:1144)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster.(Cluster.java:121)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster.(Cluster.java:108)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster.buildFrom(Cluster.java:177)[cassandra-driver-core-2.1.4.jar:?]
在com.datasax.driver.core.Cluster$Builder.build(Cluster.java:1109)[cassandra-driver-core-2.1.4.jar:?]

该应用程序在功能上工作。我只是关心我为什么会看到这个错误以及如何避免这个错误。

正如您所指出的,除了不注册集群的一个度量MBean之外,这不会导致任何问题。为了防止此消息/问题,您可以为集群实例指定唯一的名称,可能与应用程序本身的名称有关

Cluster Cluster=Cluster.builder().withClusterName(“myapplication”)
.build();
这将使用“myapplication-1”作为mbean名称的前缀


否则,您可以使用或禁用度量报告一起禁用JMX度量。

您击败了我,安迪。。。通常,驱动程序使用计数器(cluster1、cluster2…)自己处理它,但在这种情况下,由于计数器存储在静态字段中,并且每个应用程序都有自己的类加载器,因此会失败。但是MBeans服务器是唯一的,因此会发生冲突。单独的类加载器非常重要。我试图理解为什么计数器没有递增,但是如果每个webapp都有自己的加载器,那么计数器就有意义了。如果Flink(我不熟悉)在创建集群实例的任何地方都使用单独的类加载器,那么您是对的,它需要提供一个唯一的集群名称,或者您可以简单地禁用Jmx度量。