如何以编程方式确定 web 应用程序正在哪个(负载平衡)tomcat 服务器上运行
我有一个在两个负载平衡的 tomcat 服务器上运行的 web 应用程序。应用程序确定其运行在哪个服务器上的最佳方法是什么?
虽然我可以从 sessionid 得知它正在哪个服务器上运行(因为附加了 .jvm1 和 .jvm2),但如何在后台任务中获取类似的信息(通过 Spring 的 @Scheduled 注释安排)?
I have a webapp that is running on two load balanced tomcat servers. What's the best way for the app to determine which server it's running on?
While I can tell from a sessionid which server it's running on (as .jvm1 and .jvm2 get appended), how can I get similar information in a background task (scheduled via Spring's @Scheduled annotation)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能有点过分了,如果有其他方法可能会更好,但您也许可以查询 tomcat Engine MBean 并获取它的
jvmRoute
属性。 MBean通常称为Catalina:type=Engine
或Catalina:type=Engine,service=something
(请参阅 此处了解更多详细信息)。It might be overkill and if there's another way it's probably better, but you might be able to query the tomcat Engine MBean and get it's
jvmRoute
property. The MBean is usually calledCatalina:type=Engine
orCatalina:type=Engine,service=something
(see here for more details).如果您在不同的计算机上运行实例,则只需获取 hostName
InetAddress.getLocalHost().getCanonicalHostName()
If you run your instance on different machines, you can simply get hostName
InetAddress.getLocalHost().getCanonicalHostName()