2017-02-09 2 views
0

서버 시작시 웹 응용 프로그램의 IP 및 포트를 가져 오시겠습니까? 예를 들어 내 ServletContextListener 클래스 내에서. 하지만 FaceContext 나 ​​ServletContextEvent를 사용하지 못했습니다.ServletContextListener에서 웹 응용 프로그램 IP 및 포트 가져 오기

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

위의 코드를 사용하면 지원되지 않는 방법이됩니다.

응용 프로그램이 시작될 때부터 실행되는 스레드가 필요하므로 일부 요청이 우리 서버에 전송 될 때까지 기다릴 수 없습니다.

jsf2, primeface하고이 같은 HttpServletRequest로 접근 할 필요가 웹 로직 10.3.6

답변

2

에서 실행하여 우리의 응용 프로그램 : 누군가가 보낼 때까지 우리는 기다릴 수 없었다 내가 그 전에 언급

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

ERH을 didnt을 우리 서버에 대한 요청? 우리 서버가 시작할 때부터 getRequest가 null로 리턴 할 것이므로이 대답은 작동하지 않습니다. – mameo

+0

아, 알겠습니다. 나는 그 부분을 놓쳤다 ... 애플리케이션에서 웹 서버에 의해 어느 포트가 노출되는지에 대한 표준적인 방법은 없다. 사실, 웹 서버는 여러 포트에서 단일 웹 응용 프로그램을 노출하도록 구성 될 수 있습니다. 아마도 WebLogic에는이를 수행 할 수있는 고유 API가 있지만 아무 것도 알지 못합니다. 아마도 IP와 포트를 찾아야하는 이유를 명확히한다면 우리는 똑똑한 솔루션을 제안 할 수 있습니다. –

+0

우리는 각각 파일을 생성 할 스레드가있는 여러 개의 서버를 가지고 있습니다. 이 스레드는 일반적으로 사용자가 로그인하지 않은 중간 밤에 시작하는 서버 시작시 시작됩니다. 우리가 FTP 나 san storage와 같은 공유 리소스를 갖고 있지 않아서 각 서버가 자신의 서버에 파일을 생성 할 수 없었기 때문에 어리석은 이유가 있습니다. 그래서 우리의 사용자가 서버 A에 로그인했지만 파일이 서버 B에있을 때, 사용자는 파일을 가져올 수 있도록 서버 B 링크가 필요합니다. 그런 것. – mameo

관련 문제