SSISO Community

시소당

웹로직 시작시 InvalidClassException 오류가 발생한다면

웹로직 시작시 InvalidClassException 오류가 발생한다면

Develooops/WebLogic : 2007/10/12 10:54
웹로직 시작시 아래와 같은 InvalidClassException 오류가 발생한다면?

serialVersionUID의 값이 다르다는 것으로 보아 웹로직과 JDK가 서로 호환이 되지 않아서 발생하는 문제다.
동일한 클래스일지라도 serialVersionUID가 다르면 다른 클래스로 인식되어 서로 데이터를 주고 받을 수 없다.

There are 1 nested errors:

weblogic.management.ManagementException: [Management:141266]Parsing Failure in c
onfig.xml: javax.xml.namespace.QName; local class incompatible: stream classdesc
 serialVersionUID = 4418622981026545151, local class serialVersionUID = -9120448
754896609940
        at weblogic.management.provider.internal.RuntimeAccessImpl.<init>(Runtim
eAccessImpl.java:122)
        at weblogic.management.provider.internal.RuntimeAccessService.start(Runt
imeAccessService.java:38)
        at weblogic.t3.srvr.ServerServicesManager.startService(ServerServicesMan
ager.java:374)
        at weblogic.t3.srvr.ServerServicesManager.startInStandbyState(ServerServ
icesManager.java:125)
        at weblogic.t3.srvr.T3Srvr.initializeStandby(T3Srvr.java:630)
        at weblogic.t3.srvr.T3Srvr.startup(T3Srvr.java:402)
        at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
        at weblogic.Server.main(Server.java:67)
Caused by: java.io.InvalidClassException: javax.xml.namespace.QName; local class
 incompatible: stream classdesc serialVersionUID = 4418622981026545151, local cl
ass serialVersionUID = -9120448754896609940
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:155
2)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
699)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at java.util.HashMap.readObject(HashMap.java:1066)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946
)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:19
08)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at java.util.HashMap.readObject(HashMap.java:1067)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946
)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:19
08)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at com.bea.staxb.buildtime.internal.bts.BindingFile.forSer(BindingFile.j
ava:77)
        at com.bea.staxb.buildtime.internal.tylar.RuntimeTylar.getBindingFiles(R
untimeTylar.java:111)
        at com.bea.staxb.buildtime.internal.tylar.RuntimeTylar.getBindingLoader(
RuntimeTylar.java:90)
        at com.bea.staxb.runtime.internal.BindingContextFactoryImpl.createBindin
gContext(BindingContextFactoryImpl.java:66)
        at com.bea.staxb.runtime.internal.BindingContextFactoryImpl.createBindin
gContext(BindingContextFactoryImpl.java:52)
        at weblogic.descriptor.internal.MarshallerFactory.<init>(MarshallerFacto
ry.java:48)
        at weblogic.descriptor.DescriptorManager$DefaultMarshallerFactorySinglet
on.<clinit>(DescriptorManager.java:40)
        at weblogic.descriptor.DescriptorManager.getDefaultMF(DescriptorManager.
java:116)
        at weblogic.descriptor.DescriptorManager.getMarshallerFactory(Descriptor
Manager.java:125)
        at weblogic.descriptor.DescriptorManager.getDescriptorFactory(Descriptor
Manager.java:153)
        at weblogic.descriptor.DescriptorManager.createDescriptor(DescriptorMana
ger.java:277)
        at weblogic.management.provider.internal.DescriptorManagerHelper.loadDes
criptor(DescriptorManagerHelper.java:52)
        at weblogic.management.provider.internal.RuntimeAccessImpl$IOHelperImpl.
parseXML(RuntimeAccessImpl.java:599)
        at weblogic.management.provider.internal.RuntimeAccessImpl.parseNewStyle
Config(RuntimeAccessImpl.java:230)
        at weblogic.management.provider.internal.RuntimeAccessImpl.<init>(Runtim
eAccessImpl.java:110)
        ... 7 more

>
<2007. 10. 12 오전 10시 32분 56초 KST> <Notice> <WebLogicServer> <BEA-000365> <S
erver state changed to FAILED>
<2007. 10. 12 오전 10시 32분 56초 KST> <Error> <WebLogicServer> <BEA-000383> <A
critical service failed. The server will shut itself down>
<2007. 10. 12 오전 10시 32분 56초 KST> <Notice> <WebLogicServer> <BEA-000365> <S
erver state changed to FORCE_SHUTTING_DOWN>


해결안:

1. setDomainEnv.cmd 파일에
- Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 추가

2. ant task 수행 중 다음과 같이 ANT_OPT를 설정한다.
Set ANT_OPT=-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0

3. 모든 ANT 파일의 java 혹은 javac 작업에서 jvmarg를 아래 샘플처럼 적용하라.
<target name="run">
<java classname="examples.webservices.jws_basic.simple.Client" fork="true"
failonerror="true" >
<!--Note the jvmarg tag -->
<jvmarg line="-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0" />
<classpath refid="client.class.path"/>
<arg line="http://${wls.hostname}:7001/jws_basic_simple/SimpleService" />
</java>
</target>


출처 : http://labs.tistory.com/50

1242 view

4.0 stars