본문 바로가기
트러블슈팅/MW

[웹로직] Admin Console Internal Server Error

by sangyeon 2021. 7. 26.
728x90

L사에서 WebLogic Admin Console 화면에서 Internal Error Server가 발생한다고 연락이 왔다.

Admin Server는 정상적으로 기동된 상태이고, 포트도 Listen 되어 있는 상태였다.

 

우선 AdminServer쪽 에러 로그를 확인해보니 아래와 같은 메세지가 발생하고 있었다.

<2021. 3. 16, 5:48:55,66 오후 KST> <[ServletContext@1378697875[app:consoleapp module:console path:null spec-version:3.1]] Servlet failed with an Exception
java.lang.NullPointerException
at com.bea.netuix.servlets.extension.BookExtension.insertExtension(BookExtension.java:90)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:664)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:692
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:692)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:692)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:692)
at com.bea.netuix.servlets.manager.SingleFileProcessor.getMergedControlFromFile(SingleFileProcessor.java:442)
at com.bea.netuix.servlets.manager.UIServletInternal.processStream(UIServletInternal.java:279)
at com.bea.netuix.servlets.manager.UIServletInternal.getTree(UIServletInternal.java:237)
at com.bea.netuix.servlets.manager.UIServletInternal.createUIContext(UIServletInternal.java:110)
at com.bea.netuix.servlets.manager.UIServlet.createUIContext(UIServlet.java:434)
....(중략)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
>

-> 로그 내용을 확인해보니, 웹로직 관리콘솔 어플리케이션에서 NullPointException이 발생하고 있었다.

 

해당 메시지 패턴으로 오라클 Support 사이트에서 검색해보니 솔루션을 확인할 수 있었다.

WLS Admin Console not Accessible with java.lang.NullPointerException (Doc ID 2379390.1)

 

APPLIES TO:
Oracle WebLogic Server - Version 10.3.6 and later
Information in this document applies to any platform.


SYMPTOMS
Accessing Admin Console throws 'Internal Server Error' message while Admin Server is running


CHANGES

In this case the issue started after OS Patching


CAUSE
One or more files related to consoleapp inside the 'tmp' directory corrupted. Following error message logged in the Admin Server log file (the corrupted file can be different in each case)
 
####<> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> ; calling from method ServletContext.getResource().>
####<> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <[ServletContext@690630796[app:consoleapp module:console path:/console spec-version:2.5]] Servlet failed with Exception
java.lang.NullPointerException
at com.bea.netuix.servlets.extension.BookExtension.insertExtension(BookExtension.java:90)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:669)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.insertExtensions(SingleFileProcessor.java:697)
at com.bea.netuix.servlets.manager.SingleFileProcessor.getMergedControlFromFile(SingleFileProcessor.java:440)
at com.bea.netuix.servlets.manager.UIServletInternal.processStream(UIServletInternal.java:272)
at com.bea.netuix.servlets.manager.UIServletInternal.getTree(UIServletInternal.java:230)
at com.bea.netuix.servlets.manager.UIServletInternal.createUIContext(UIServletInternal.java:105)
at com.bea.netuix.servlets.manager.UIServlet.createUIContext(UIServlet.java:357)
at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:229)
at com.bea.netuix.servlets.manager.UIServlet.doGet(UIServlet.java:211)
at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:196)
at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:251)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at com.bea.console.utils.MBeanUtilsInitSingleFileServlet.service(MBeanUtilsInitSingleFileServlet.java:64)
at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:130)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)


SOLUTION
(1) Stop Admin Server
(2) Rename 'tmp' directory under $DOMAIN_HOME/servers/AdminServer
(3) Start Admin Server
(4) Access the Admin Console

위의 메시지가 발생하면서 웹로직 관리콘솔이 Internal Server Error (500 에러)가 떨어지는 이유는 OS 패치 이후 AdminServer의 consoleapp이 컴파일된 tmp 디렉토리가 깨져서 발생하는 이슈이다.

 

솔루션은 AdminServer 중지 후에, servers 디렉토리 아래에 AdminServer tmp 디렉토리를 mv로 백업하고 재기동하여 consoleapp을 새로 컴파일하는 것이다.


실제로 재기동하는 순간 servers/AdminServer/tmp가 새로 생성되는 것을 확인할 수 있을 것이다.

L사 이슈는 이렇게 해결이 되었다.

 

 

 

728x90