我有一个在两个负载均衡的tomcat服务器上运行的webapp。应用程序确定运行哪个服务器的最佳方法是什么?
虽然我可以从sessionid告诉它正在运行哪个服务器(如.jvm1和.jvm2附加),但是如何在后台任务中获取类似信息(通过Spring的@Scheduled注释进行调度)?
答案 0 :(得分:1)
如果您在不同的计算机上运行实例,则只需获取hostName InetAddress.getLocalHost().getCanonicalHostName()
答案 1 :(得分:1)
它可能有点过分,如果有另一种方式可能会更好,但您可以查询tomcat Engine MBean并获取它的jvmRoute
属性。 MBean 通常称为Catalina:type=Engine
或Catalina:type=Engine,service=something
(请参阅here for more details)。