본문 바로가기
IBM - old/WAS 문제&해결

한번도 로딩되지 않았던, method 가 추가된 class 를 hot deploy 이후 Exception 발생

by freeman98 2016. 5. 9.

1. WAS 버전 : WebSphere ND v6.1

2. OS : All

3. Error 발생 시점 :  한번도 로딩되지 않았던, method 가 추가된 class 를 hot deploy 이후 Exception 발생
                            (단, 이 경우 해당 jar 파일의 다른 class 들이 한번이라도 load 된 경우에만 발생)

4. Error message :
[10. 11. 18   11:39:58:095 KST] 00000038 SinglePathCla E   WSVR0120E: aaa.bbb.ccc.Dummy 처리 중에 오류가 발생했습니다.
java.io.EOFException: Unexpected end of ZLIB input stream
        at java.util.zip.ZipFile$2.fill(ZipFile.java:378)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:159)
        at com.ibm.ws.classloader.SinglePathClassProvider.readFully(SinglePathClassProvider.java:620)
        at com.ibm.ws.classloader.SinglePathClassProvider.access$000(SinglePathClassProvider.java:59)
        at com.ibm.ws.classloader.SinglePathClassProvider$2.run(SinglePathClassProvider.java:364)
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63)
        at com.ibm.ws.classloader.SinglePathClassProvider.getClassBytesFromJar(SinglePathClassProvider.java:342)
        at com.ibm.ws.classloader.SinglePathClassProvider.getClassBytes(SinglePathClassProvider.java:286)
        at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:465)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:388)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:383)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader._loadClass(JSPExtensionClassLoader.java:103)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader.loadClass(JSPExtensionClassLoader.java:70)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader.loadClass(JSPExtensionClassLoader.java:52)
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:69)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:131)
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1328)
        at java.beans.Beans.instantiate(Beans.java:219)

FFDC 에 다음과 같은 Exception 발견
------Start of DE processing------ = [10. 11. 18   11:39:58:106 KST] , key = java.lang.ClassFormatError com.ibm.ws.webcontainer.weba
pp.WebAppServletManager.loadServlet 227
Exception = java.lang.ClassFormatError
Source = com.ibm.ws.webcontainer.webapp.WebAppServletManager.loadServlet
probeid = 227
Stack Dump = java.lang.ClassFormatError: (aaa/bbb/ccc/Dummy) attribute length less than attribute data at offset=455
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader._m$mDefineClass(ClassLoader.java:258)
        at java.lang.ClassLoader.defineClass(ClassLoader.java)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:562)
        at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:514)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:388)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:383)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader._loadClass(JSPExtensionClassLoader.java:103)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader.loadClass(JSPExtensionClassLoader.java:70)
        at com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader.loadClass(JSPExtensionClassLoader.java:52)
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:69)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:131)
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1328)
        at java.beans.Beans.instantiate(Beans.java:219)
        at java.beans.Beans.instantiate(Beans.java:63)

5. 예상 이유 :
 Class 를 Loading 하기 전에 해당 Class 의 구조를 verify 하는 작업이 선행되는데 이미 기존에 배포된 Jar 파일의 class 파일에서
 Method 를 추가해서 해당 Jar 파일을 hot deploy 하게 되면 class 구조의 불일치에 의해서 Exception 이 발생하는 것으로 보임

6. 조치 방안 :
 해당 Exception 발생후 application 이나 WAS 를 재기동하면 해당 문제는 바로 해결됨

댓글