zoukankan      html  css  js  c++  java
  • 如何在集群中获得处理本次请求的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

  • 相关阅读:
    设计模式之第14章-命令模式(Java实现)
    设计模式之第13章-职责链模式(Java实现)
    设计模式之第12章-享元模式(Java实现)
    我的一年,过去,现在
    Reporting Services 的一些问题
    利用ICSharpCode进行压缩和解压缩
    利用System.Net.Mail 发送邮件
    利用Log4net组件记录日志
    系统权限的设计之简单设计
    利用NPOI组件产Excel完整操作
  • 原文地址:https://www.cnblogs.com/gotodsp/p/6219766.html
Copyright © 2011-2022 走看看