Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Java Tomcat 6虚拟托管相同的Spring应用程序_Java_Spring_Tomcat_Jmx - Fatal编程技术网

Java Tomcat 6虚拟托管相同的Spring应用程序

Java Tomcat 6虚拟托管相同的Spring应用程序,java,spring,tomcat,jmx,Java,Spring,Tomcat,Jmx,我想将相同的.war文件部署到同一Tomcat 6实例上的两个不同虚拟主机上。然而,我在Spring框架和注册bean方面遇到了问题。这是我看到的错误 org.springframework.jmx.export.UnableToRegistermBean异常: 无法注册MBean [com.dti.servlets。Configuration@3a1834] 使用键“EAM:name=webConfig”;嵌套 例外是 javax.management.InstanceAlreadyExist

我想将相同的.war文件部署到同一Tomcat 6实例上的两个不同虚拟主机上。然而,我在Spring框架和注册bean方面遇到了问题。这是我看到的错误

org.springframework.jmx.export.UnableToRegistermBean异常: 无法注册MBean [com.dti.servlets。Configuration@3a1834] 使用键“EAM:name=webConfig”;嵌套 例外是 javax.management.InstanceAlreadyExistsException: EAM:name=webConfig


我很确定我需要为每个虚拟主机定义我的上下文,但我没有任何运气。我发现唯一有效的修复方法是更改bean键的名称。任何其他建议都很好。

问题是bean的名称在每个JVM中必须是唯一的。由于您两次部署相同的
war
,因此有两种解决方案:

  • 更改Spring JMX导出器的注册行为(请参阅)
  • 定义您自己的
    ObjectNamingStrategy
    以在启动时动态更改bean的名称(最终的名称为app1.mybean和app2.mybean)

  • 我已经提出了这个建议,并因为我的麻烦而被大骂:)我不同意(1),但在我看来(2)是完全合理的:您使用JMX注释并在两次战争中包含相同的类(这并不奇怪)。我只找到了解决这个问题的方法,但是如果有人有其他的解决方法,我会全神贯注的:——)谢谢弗拉基米尔,这就是我希望得到的信息。斯卡夫曼,我不知道你在说什么,但你没有提供任何信息。我们可以将你的答案与这个答案进行比较,但不知何故,它被神秘地删除了。还有,你是如何在论坛上被“叫喊”的?我所说的是,你基本上重申了我的问题,没有提供任何新的信息。我不是有意冒犯你,对不起。再次感谢你,弗拉基米尔。