在Java中获取Application Server名称或ip和端口
我们希望识别并显示运行Java应用程序的服务器和端口,该服务器和端口位于代理Web服务器之后。 这意味着getServerName()和getServerPort()返回代理的服务器名称及其端口(80)。
我们有两个应用服务器实例在一个物理盒上运行,因此每个盒子有两个活动端口,即9080,9081。我想要的是显示:
。
有任何想法吗? 我是一个完整的Java菜鸟,对不起,如果这是一个基本问题。
您可以使用ServletRequest#getLocalXXX()
方法。
-
ServletRequest#getLocalName()
返回本地主机名。 -
ServletRequest#getLocalAddr()
返回本地IP。 -
ServletRequest#getLocalPort()
返回本地端口。
服务器主机名是请求的一部分,因为它取决于客户端用于访问主机的URL。 以这种方式获得的价值是在客户端上定义的,并不一定是您所期望的。
如果您对本地主机名感兴趣,可以尝试:
String hostname = InetAddress.getLocalHost().getHostName();
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(); } } }