WAS/Weblogic

[Error] weblogic java.lang.NoSuchMethodError

햄볶는뚱땡이 2011. 9. 14. 13:27

####<2011. 9. 14 오전 10시 32분 02초 KST> <Error> <HTTP> <user-PC> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1315963922648> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@161dc26 - appName: '_auto_generated_ear_', name: 'com', context-path: '/com', spec-version: '2.5'] Servlet failed with Exception
java.lang.NoSuchMethodError:org.apache.commons.lang.exception.ExceptionUtils.getRootCauseMessage(Ljava/lang/Throwable;)Ljava/lang/String;
 ---------------------------------------------------------------------------------------


일반 톰캣에서는 잘 도는데.... weblogic 으로  WAS 를 변경 한 후에
웹로직에서 다음과 같은 에러가 발생했을 경우!


보통 App 안의 common.lang.jar 파일이 Duplication 나서 나는거라 생각했었는데.. 아무리 눈 씻고 찾아봐도 1개다 -_-;;;


bea 에 보면 modules 라는 폴더가 있다.
이 안에 commons.lang.jar 파일이 들어 있는데,
이 녀석과 Application Library 가 Dup 이 나서 그런거다...




자자... 그럼 이제 어떻게 해야 될까?

Solution >> App 안의 - WEB-INF 의 폴더 안에 weblogic.xml 을 살펴 보자.
(weblogic.xml 이 없다면 WEB-INF 안에 weblogic.xml 을 생성해 주도록 하자)

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-web-app"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
 <wls:weblogic-version>10.3</wls:weblogic-version>
 <wls:context-root>com</wls:context-root>
 <wls:container-descriptor>
  <wls:servlet-reload-check-secs>3</wls:servlet-reload-check-secs>
  <wls:resource-reload-check-secs>-1</wls:resource-reload-check-secs>
  <!-- 프로젝트의 lib 를 먼저 로딩하는 옵션 -->
  <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
 </wls:container-descriptor>
 <wls:charset-params>
  <wls:input-charset>
   <wls:resource-path>/*</wls:resource-path>
   <wls:java-charset-name>UTF-8</wls:java-charset-name>
  </wls:input-charset>
 </wls:charset-params>
</wls:weblogic-web-app>


위와 같이  <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> 옵션을 주게 되면 Application 의 Library 를 먼저 일게 된다.

이렇게 비로소 해결하였다!

유-후~