如何以编程方式确定 web 应用程序正在哪个(负载平衡)tomcat 服务器上运行

发布于 2024-11-06 19:16:27 字数 176 浏览 0 评论 0原文

我有一个在两个负载平衡的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天暗了我发光 2024-11-13 19:16:27

这可能有点过分了,如果有其他方法可能会更好,但您也许可以查询 tomcat Engine MBean 并获取它的 jvmRoute 属性。 MBean通常称为 Catalina:type=EngineCatalina: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 called Catalina:type=Engine or Catalina:type=Engine,service=something (see here for more details).

云之铃。 2024-11-13 19:16:27

如果您在不同的计算机上运行实例,则只需获取 hostName InetAddress.getLocalHost().getCanonicalHostName()

If you run your instance on different machines, you can simply get hostName InetAddress.getLocalHost().getCanonicalHostName()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文