2017-02-09 47 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

相关问题