2009-12-01 21 views
6

プロキシWebサーバーの背後にあるJavaアプリケーションが実行されているサーバーとポートを特定して表示します。つまり、getServerName()およびgetServerPort()は、プロキシおよびそのポート(80)のサーバー名を返します。Javaでアプリケーションサーバー名またはIPとポートを取得

1つの物理ボックスで2つのアプリケーションサーバーインスタンスが実行されているため、ボックスあたり2つのアクティブポート、つまり9080,9081があります。<Application Server Name>:<Application Server Port>が表示されます。

アイデア?私は完全なJavaのnoobです、これは基本的な質問が残念です。

答えて

12

これにはServletRequest#getLocalXXX()メソッドを使用できます。

+0

これと以下のrspの回答の組み合わせです。 getLocalNameはIPアドレスを提供します。 InetAddress.getLocalHost.getHostNameは私にサーバー名を与えます。 getLocalPortは正しいポート番号を提供します。素晴らしいです、ありがとう! –

+0

ようこそ。しかし、興味深いことに 'getLocalName()'はホスト名を返さなかった。 – BalusC

+0

私は、アプリケーションがIISの背後にあり、IISがIPアドレス経由でアプリケーションサーバーに指示しているため、問題があるのだろうかと思います。 –

13

サーバーのホスト名は、クライアントがホストに到達するために使用したURLによって異なるため、要求の一部です。このようにして得られる価値は、クライアント上で定義され、期待通りである必要はありません。

ローカルホスト名に興味があるなら、あなたは試すことができます:

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

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(); 
     } 
    } 
} 
+1

引用された解決策はポート番号を取得しません。 – ibelcomputing

関連する問題