首页 > 代码库 > 如何在集群中获得处理本次请求的web容器的端口号?
如何在集群中获得处理本次请求的web容器的端口号?
系统四台机器,每台机器部署四个Tomcat Web容器。现需要根据端口号随机切换到映射的数据源,若一台机器一个Tomcat则用IP识别,可现在一台机器四个Tomcat,因此还需要获得Web容器的端口号。
那么:在Web服务器集群中,一个Spring任务该如何获取Web容器的端口号呢?
设置需要的Key,本系统使用Tomcat Web服务器,操作如下。
编辑文件${tomact-dir}/bin/catalina.bat,添加以下内容即可:
set JAVA_OPTS=-D<key>="<value>",如:set JAVA_OPTS=-Dreyo.localPort="3400"
然后在程序System.getProperty("reyo.localPort")即可获取处理该次请求的Tomcat端口号。
1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 4 public class SystemProperties { 5 6 public static InetAddress getInetAddress() { 7 try { 8 return InetAddress.getLocalHost(); 9 } catch (UnknownHostException e) { 10 System.out.println("unknown host!"); 11 } 12 return null; 13 } 14 15 public static String getHostIp(InetAddress netAddress) { 16 if (null == netAddress) { 17 return null; 18 } 19 String ip = netAddress.getHostAddress(); // get the ip address 20 return ip; 21 } 22 23 public static String getHostName(InetAddress netAddress) { 24 if (null == netAddress) { 25 return null; 26 } 27 String name = netAddress.getHostName(); // get the host address 28 return name; 29 } 30 31 public static String getPort(){ 32 return System.getProperty("reyo.localPort"); 33 } 34 35 public static void main(String[] args) { 36 InetAddress netAddress = getInetAddress(); 37 System.out.println("host ip:" + getHostIp(netAddress)); 38 System.out.println("host name:" + getHostName(netAddress)); 39 System.out.println("port:" + getPort()); 40 try { 41 InetAddress netAddressa = InetAddress.getLocalHost(); 42 String hostAddress = netAddressa.getHostAddress(); 43 System.out.println(hostAddress); 44 } catch (UnknownHostException e) { 45 logger.error("位置主机!!!", e); 46 } 47 } 48 49 }
参考资料:
集群: 如何在spring 任务中 获得集群中的一个web 容器的端口号?
Done
如何在集群中获得处理本次请求的web容器的端口号?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。