在Spring应用程序中禁用JMX

19

我想要禁用JMX,这样就不会出现以下错误信息:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'mbeanExporter'anymore. 

我找到了一个部分答案,称我应该在application.properties文件中包含以下内容:

  • spring.datasource.jmx-enabled=false

所以我创建了带有这一行的文件。但是我如何确保Spring实际上读取它?我需要编辑spring.xml吗?如果需要,在哪里编辑?

4个回答

41

您需要禁用应用程序属性文件中的设置(如果未设置,它会自动启用)。请编辑或创建以下文件: src/main/resources/config/application.properties

这是针对Maven项目的,如果不是Maven,请将'resources'放在与您的java文件夹相同的级别。

您只需要在文件中添加这一行内容(否则可以为空):

spring.jmx.enabled=false

如果您想添加其他设置,以下是所有选项: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


1
以防万一,如果您像我一样来到这里,想知道为什么无法通过“spring.jmx.enabled=false”在测试期间禁用它,请确保您的应用程序配置中没有额外的“@EnableMBeanExport”。它似乎会覆盖/支配该属性。 - Benjamin Peter
你好,我们能否通过编程的方式设置Spring JMX.enabled=true属性,就像我们可以通过类设置服务器端口一样,能否以同样的方式设置此属性为true? - Tirth Timaniya

24

在我的情况下,是使用的IntelliJ。

在运行配置中,IntelliJ有一个名为“启用JMX代理”的设置。取消勾选此项即可禁用JMX。

如果勾选了此项,则会覆盖通过属性/ yml在应用程序中进行的任何设置。


同样适用于Eclipse,我遇到了同样的问题,在运行配置中有一个复选框启用了JMX。 - JohnEye

2

是的,我正在使用Spring Boot,并将文件放在src\main\resources下。这样做是否只是修复并禁用JMX?因为在我的情况下,这种情况并没有发生。 - OntZ
应该足够了 - 您的日志应该显示jmx未启用。另一个确认它的选项是在application.properties中禁用横幅作为测试 - spring.main.show_banner=false。 - farrellmr
如果不是这样,我应该在我的代码中的哪里使用此属性来禁用整个应用程序的JMX? - OntZ
抱歉 - 我认为您需要设置的属性是spring.jmx.enabled=false。 - farrellmr
没问题 - 请查看示例项目以获取范例。 - farrellmr
显示剩余3条评论

1

您可以尝试禁用JMX自动配置:

@EnableAutoConfiguration(exclude={JmxAutoConfiguration.class})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接