2017-02-09 49 views
0

我想在服務器啓動時獲取我的Web應用程序的IP和端口?例如在我的ServletContextListener類中。但我無法使用FaceContext和ServletContextEvent。在ServletContextListener上獲取Web應用程序的IP和端口

FacesContext.getCurrentInstance().getExternalContext().getRequestServerName() 

使用類似上面的代碼將導致Unsupported方法。

因爲它需要一個從我們的應用程序開始運行的線程,所以我們不能等到某個請求發送到我們的服務器。

使用JSF2,primeface並在WebLogic 10.3.6

回答

2

運行,您需要訪問HttpServletRequest的,這樣我們的應用程序:

HttpServletRequest request = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()); 
request.getLocalAddr(); 
request.getLocalPort(); 
+0

普洱didnt在此之前,我提到我們不能等到有人給請求我們的服務器?因爲我們需要在我們的服務器的開始,getRequest將返回null,所以這個答案是不行的 – mameo

+0

哦,我明白了。我錯過了那部分......沒有標準的方式來訪問Web服務器從應用程序公開哪個端口的IP。實際上,可以將Web服務器配置爲在多個端口中公開單個Web應用程序。也許WebLogic有一個專有API來做到這一點,但我不知道任何。也許如果你澄清_why_你需要找到de IP和端口,我們可以想出一個聰明的解決方案... –

+0

我們有多個服務器,每個服務器都有一個線程來創建文件。這些線程開始於我們的服務器的啓動,通常在午夜開始,當時沒有用戶登錄。那麼由於一些愚蠢的原因,我們沒有像FTP或SAN存儲這樣的共享資源,所以每臺服務器都在自己的服務器上創建它們的文件。所以當我們的用戶登錄到服務器A,但文件在服務器B時,我們需要服務器B的鏈接,以便用戶可以獲取文件。類似的東西。 – mameo

相關問題