2009-12-01 54 views
6

Chúng tôi muốn xác định và hiển thị máy chủ và cổng mà ứng dụng Java đang chạy trên máy chủ web phía sau máy chủ proxy. Điều này có nghĩa rằng getServerName() và getServerPort() trả về tên máy chủ của proxy và cổng của nó (80).Lấy tên máy chủ ứng dụng hoặc ip và cổng trong Java

Chúng tôi có hai cá thể máy chủ ứng dụng chạy trên một hộp vật lý duy nhất và do đó có hai cổng hoạt động cho mỗi hộp, tức là 9080, 9081. Điều tôi muốn có là <Application Server Name>:<Application Server Port> được hiển thị.

Bất kỳ ý tưởng nào? Tôi là một Noob Java hoàn chỉnh, xin lỗi nếu đây là một câu hỏi cơ bản.

Trả lời

12

Bạn có thể sử dụng phương pháp ServletRequest#getLocalXXX() cho việc này.

+0

Đây là sự kết hợp của câu trả lời của rsp dưới đây. getLocalName cung cấp địa chỉ IP. InetAddress.getLocalHost.getHostName cung cấp cho tôi tên máy chủ. getLocalPort cung cấp số cổng chính xác. Thật sự cảm ơn! –

+0

Bạn được chào đón. Tuy nhiên thú vị là 'getLocalName()' không trả lại tên máy chủ. – BalusC

+0

Tôi tự hỏi nếu vấn đề là bởi vì các ứng dụng là phía sau IIS như một proxy và IIS hướng đến máy chủ ứng dụng thông qua địa chỉ IP. –

13

Tên máy chủ là một phần của yêu cầu, vì nó phụ thuộc vào URL mà khách hàng đã sử dụng để tiếp cận máy chủ lưu trữ của bạn. Giá trị bạn nhận được theo cách này được xác định trên máy khách và không phải là những gì bạn mong đợi.

Nếu bạn quan tâm đến tên máy địa phương, bạn có thể thử:

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

Crunchify cung cấp một ví dụ tốt đẹp cho việc này.

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

Giải pháp được trích dẫn không nhận được số cổng. – ibelcomputing

Các vấn đề liên quan