【问题标题】:Get Application Server name or ip and port in Java在 Java 中获取应用程序服务器名称或 ip 和端口
【发布时间】:2010-12-22 01:39:51
【问题描述】:

我们希望识别并显示在代理 Web 服务器后面运行 Java 应用程序的服务器和端口。这意味着 getServerName() 和 getServerPort() 返回代理的服务器名称及其端口 (80)。

我们有两个应用服务器实例在一个物理机上运行,​​因此每个机有两个活动端口,即 9080、9081。我希望显示 <Application Server Name>:<Application Server Port>

有什么想法吗?我是一个完整的 Java 菜鸟,如果这是一个基本问题,我很抱歉。

【问题讨论】:

    标签: java web-applications websphere


    【解决方案1】:

    您可以为此使用ServletRequest#getLocalXXX() 方法。

    【讨论】:

    • 这和下面rsp的答案的组合。 getLocalName 提供 IP 地址。 InetAddress.getLocalHost.getHostName 给了我服务器名称。 getLocalPort 提供正确的端口号。太棒了,谢谢!
    • 不客气。有趣的是,getLocalName() 没有返回主机名。
    • 不知道是不是因为应用在IIS后面作为代理,IIS通过IP地址指向应用服务器。
    • 这不会对性能产生负面影响,因为您通过 servlet 过滤器在每个服务器请求上设置这些(或检查是否需要设置)?
    【解决方案2】:

    服务器主机名是请求的一部分,因为它取决于客户端用于访问您的主机的 URL。您通过这种方式获得的价值是在客户端上定义的,不一定是您所期望的。

    如果你对本地主机名感兴趣,可以试试:

    String hostname = InetAddress.getLocalHost().getHostName();
    

    【讨论】:

    • 端口号详细信息在哪里
    【解决方案3】:

    Crunchify 提供了一个很好的例子。

    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class CrunchifyGetIPHostname {
    
        public static void main(String[] args) {
    
            InetAddress ip;
            String hostname;
            try {
                ip = InetAddress.getLocalHost();
                hostname = ip.getHostName();
                System.out.println("Your current IP address : " + ip);
                System.out.println("Your current Hostname : " + hostname);
    
            } catch (UnknownHostException e) {
    
                e.printStackTrace();
            }
        }
    }
    

    【讨论】:

    • 引用的解决方案没有得到端口号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2011-11-18
    • 1970-01-01
    • 2021-03-25
    • 2012-12-05
    相关资源
    最近更新 更多