본문 바로가기
MiddleWare(미들웨어)/JEUS

[JEUS] jeus.servlet.request.enableDns 설정하기

by wonkidoki 2024. 9. 19.
반응형

- 해당 설정은 WEB 서버 앞 단에 L4, L7,  ALB 등에서 호출을 할 때 응답을 받는 과정에서 getHostName을 정상적으로 받아오지 못하는 경우 발생한다. 

- JEUS 에서는 옵션을 통해 DNS를 통해 Hostname을 가져올지 안 가져올지 설정하여 이 문제를 해결할 수 있다.

  기본값 true > false 로 변경

 

- jeus.servlet.request.enableDns 설정에 대한 설명

 

  • ServletReqeust.getRemoteHost()를 호출할 때 DNS를 통해서 호스트명을 얻어올지 여부를 설정한다. 웹 엔진이 있는 서버의 DNS 접근 여부를 설정하는 것이므로 웹 엔진 레벨 프로퍼티로 제공한다.(기본값 true)

아래 로그가 발생할 경우 해당 상황을 유추 할 수 있다. (지연 중일 때 Thread dump 로 확인)

 

109 webtob1-hth0-39 active(10.20.10.71:9900) 2328 /Login.do interrupt
servlet thread [tid=109] Stack trace of webtob1-hth0-39 tid=109
   java.lang.Thread.State: RUNNABLE
at java.net.Inet6AddressImpl.getHostByAddr(Native Method)
at java.net.InetAddress$2.getHostByAddr(InetAddress.java:933)
at java.net.InetAddress.getHostFromNameService(InetAddress.java:618)
at java.net.InetAddress.getHostName(InetAddress.java:560)
at java.net.InetAddress.getHostName(InetAddress.java:532)
at jeus.servlet.engine.HttpServletRequestImpl.getRemoteHostOfWebServerClient(HttpServletRequestImpl.java:606)
at jeus.servlet.engine.WebtoBServletRequest.getRemoteHost(WebtoBServletRequest.java:74)
at javax.servlet.ServletRequestWrapper.getRemoteHost(ServletRequestWrapper.java:292)
at com.hr.common.interceptor.Interceptor.preHandle(Interceptor.java:103)
at com.hr.common.interceptor.Interceptor$$FastClassBySpringCGLIB$$d240ccf0.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at com.hr.common.interceptor.Interceptor$$EnhancerBySpringCGLIB$$32c97866.preHandle(<generated>)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:148)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:686)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:173)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:113)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at jeus.websocket.server.WebSocketFilter.doFilter(WebSocketFilter.java:42)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at com.hr.common.filter.ServletWrapperFilter.doFilter(ServletWrapperFilter.java:87)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at com.hr.main.filter.TimerFilter.doFilter(TimerFilter.java:37)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter.doFilter(XssEscapeServletFilter.java:36)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64)
at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:99)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:87)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:148)
at jeus.servlet.valve.ContextBasicValve.invoke(ContextBasicValve.java:81)
at jeus.servlet.valve.VirtualHostBasicValve.invoke(VirtualHostBasicValve.java:15)
at jeus.servlet.valve.WebContainerBasicValve.invoke(WebContainerBasicValve.java:67)
at jeus.servlet.engine.RequestProcessor.run(RequestProcessor.java:208)
at jeus.util.pool.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:1301)
at jeus.util.pool.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:1345)
at jeus.servlet.engine.WebThreadPoolExecutor$WebRequestWorker.run(WebThreadPoolExecutor.java:201)
at java.lang.Thread.run(Thread.java:748)

- JEUS Webadmin JVM 옵션에 -Djeus.servlet.request.enableDns=false 를 넣고 MS 재 기동 해주면 된다.