This class can wrap up an exception in a non-object/serialized form to send to a remote system that might not have the exception class available for deserialization. It extends {@link RuntimeException} so it can be thrown as anormal exception to a remote VM without requiring it to be part of a remoting API signature.
Note that most of the {@link RuntimeException} methods are overridden by this class to work on the{@link #getActualException() actual exception}. However, {@link #initCause(Throwable)}, {@link #fillInStackTrace()}, {@link #getStackTrace()} and {@link #setStackTrace(StackTraceElement[])} will operate on this exception objectitself, not of the {@link #getActualException() actual exception}. Typically, the use-cases in which this exception object is to be used will not require those methods to be needed.
@author John Mazzitelli