【问题标题】:2 Spring WebApplicationInitializers detected on classpath在类路径上检测到 2 个 Spring WebApplicationInitializers
【发布时间】:2017-03-16 06:35:37
【问题描述】:

我有一个 springboot webapp,当我将它部署在我的 tomcat 7.0.54 上的服务器上时,我在 catalina.out 中收到以下消息

INFO: 2 Spring WebApplicationInitializers detected on classpath

我的应用程序部署了两次导致异常

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [inbound] with key 'inbound'; nested exception is javax.management.InstanceAlreadyExistsException

但我在本地系统上使用 tomcat 7.0.37 尝试了相同的 war 文件,并且应用程序运行良好

有什么建议吗?

谢谢。

【问题讨论】:

  • 我检测到 3 个大声笑
  • @RyanChu 你是如何检测到的
  • 我在使用 maven appengine 插件时遇到了同样的问题。无法确定导致问题的原因。没有 appengine 插件它可以正常工作。知道可能出了什么问题吗?
  • 我通过将扩展实例减少到 1 解决了这个问题。这实际上不是问题。由于 appengine-web.xml 中指定的缩放,它正在初始化
  • 通过 appengineRun(gradle 插件)运行我的应用程序时遇到同样的问题。有什么想法吗?!

标签: spring-boot


【解决方案1】:

我有同样的问题。我从我的pom.xml 文件中删除了spring-boot-starter-thymeleaf,它起作用了。您的 classpath 中可能有一个库,其中还有另一个 WebApplicationInitializer

【讨论】:

  • 我尝试使用 tomcat 7.0.75,然后开始工作,感谢您的建议,我会试一试
【解决方案2】:

我有同样的问题。我从我的 gradle 文件中删除了 compile("org.springframework.boot:spring-boot-actuator-docs") 并且它起作用了。

【讨论】:

    【解决方案3】:

    我也有同样的情况。 Spring Boot + Tomcat + InstanceAlreadyExistsException 在远程服务器上,但在我的本地 Tomcat 上运行良好。

    原因是远程服务器在 server.xml 中有两个 Host 元素指向同一个 Tomcat appBase 目录 (webapps)。这导致所有 webapps 被加载两次。对于某些 webapps 这不是问题,但对于我来说这是因为它尝试注册 MBean 两次。

    我的解决方案是将其中一个 Host 元素替换为另一个 Host 元素下的 Alias。现在我只有一个 Host 元素,每个应用只加载一次。

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 2013-04-25
      • 2014-05-21
      • 2021-08-31
      • 2016-06-19
      • 2018-11-30
      • 2014-08-28
      • 2019-09-06
      相关资源
      最近更新 更多