eclipse-ee4j/metro-saaj

SOAPFaultException is Serializable, but field fault is not

Opened this issue · 0 comments

This issue is referenced from https://bugs.openjdk.java.net/browse/JDK-8136994

FULL PRODUCT VERSION :
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
Linux 2.6.32.12-0.7-default eclipse-ee4j/metro-jax-ws#1 SMP 2010-05-20 11:14:20 +0200 x86_64 x86_64 x86_64 GNU/Linux

A DESCRIPTION OF THE PROBLEM :
javax.xml.ws.soap.SOAPFaultException is Serializable (as all Throwable(s)), but the private field "fault" (class javax.xml.soap.SOAPFault) is not.
This violates the serialization protocol and produces a java.io.NotSerializableException if a SOAPFaultException must be serialized (e.g. because of a remote service call).

ADDITIONAL REGRESSION INFORMATION:
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Serialize a SOAPFaultException.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
serialization should work, without throwing exception.
ACTUAL -
java.io.NotSerializableException: com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.io.;
import javax.xml.soap.
;
import javax.xml.ws.soap.*;

public class SOAPFaultExceptionSerializationTest {

public static void main(String args[]) throws java.lang.Exception { 
    SOAPFaultException exception = new SOAPFaultException(SOAPFactory.newInstance().createFault()); 
    new ObjectOutputStream(new ByteArrayOutputStream()).writeObject(exception); 
} 

}
---------- END SOURCE ----------

Source: javaee/metro-jax-ws#1216
Author: LanceAndersen