@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2007 the original author or authors .
* Copyright 2002 - 2009 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -21,14 +21,17 @@ import javax.servlet.ServletException;
@@ -21,14 +21,17 @@ import javax.servlet.ServletException;
import org.springframework.core.NestedExceptionUtils ;
/ * *
* Subclass of ServletException that properly handles a root cause in terms
* Subclass of { @link ServletException } that properly handles a root cause in terms
* of message and stacktrace , just like NestedChecked / RuntimeException does .
* Note that the plain ServletException doesn ' t expose its root cause at all ,
* neither in the exception message nor in printed stack traces !
*
* < p > Note that the plain ServletException doesn ' t expose its root cause at all ,
* neither in the exception message nor in printed stack traces ! While this might
* be fixed in later Servlet API variants ( which even differ per vendor for the
* same API version ) , it is not reliably available on Servlet 2 . 4 ( the minimum
* version required by Spring 3 . x ) , which is why we need to do it ourselves .
*
* < p > The similarity between this class and the NestedChecked / RuntimeException
* class is unavoidable , as this class needs to derive from ServletException
* and cannot derive from NestedCheckedException .
* class is unavoidable , as this class needs to derive from ServletException .
*
* @author Juergen Hoeller
* @since 1 . 2 . 5
@ -42,6 +45,12 @@ public class NestedServletException extends ServletException {
@@ -42,6 +45,12 @@ public class NestedServletException extends ServletException {
/** Use serialVersionUID from Spring 1.2 for interoperability */
private static final long serialVersionUID = - 5292377985529381145L ;
static {
// Eagerly load the NestedExceptionUtils class to avoid classloader deadlock
// issues on OSGi when calling getMessage(). Reported by Don Brown; SPR-5607.
NestedExceptionUtils . class . getName ( ) ;
}
/ * *
* Construct a < code > NestedServletException < / code > with the specified detail message .