You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2011/11/14 00:39:26 UTC
svn commit: r1201546 - in /tomcat/trunk/java/org/apache/jasper:
runtime/TagHandlerPool.java servlet/JspServletWrapper.java
tagplugins/jstl/core/Set.java
Author: kkolinko
Date: Sun Nov 13 23:39:25 2011
New Revision: 1201546
URL: http://svn.apache.org/viewvc?rev=1201546&view=rev
Log:
Improve processing of errors that are wrapped into InvocationTargetException.
Rethrow errors that must be rethrown.
Modified:
tomcat/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java
tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Set.java
Modified: tomcat/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java?rev=1201546&r1=1201545&r2=1201546&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java (original)
+++ tomcat/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java Sun Nov 13 23:39:25 2011
@@ -22,6 +22,7 @@ import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import org.apache.jasper.Constants;
+import org.apache.jasper.util.ExceptionUtils;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.InstanceManager;
@@ -121,7 +122,9 @@ public class TagHandlerPool {
return instance;
}
} catch (Exception e) {
- throw new JspException(e.getMessage(), e);
+ Throwable t = ExceptionUtils.unwrapInvocationTargetException(e);
+ ExceptionUtils.handleThrowable(t);
+ throw new JspException(e.getMessage(), t);
}
}
@@ -145,8 +148,10 @@ public class TagHandlerPool {
try {
instanceManager.destroyInstance(handler);
} catch (Exception e) {
+ Throwable t = ExceptionUtils.unwrapInvocationTargetException(e);
+ ExceptionUtils.handleThrowable(t);
log.warn("Error processing preDestroy on tag instance of " +
- handler.getClass().getName(), e);
+ handler.getClass().getName(), t);
}
}
@@ -156,12 +161,15 @@ public class TagHandlerPool {
*/
public synchronized void release() {
for (int i = current; i >= 0; i--) {
- handlers[i].release();
+ Tag handler = handlers[i];
+ handler.release();
try {
- instanceManager.destroyInstance(handlers[i]);
+ instanceManager.destroyInstance(handler);
} catch (Exception e) {
- log.warn("Error processing preDestroy on tag instance of " +
- handlers[i].getClass().getName(), e);
+ Throwable t = ExceptionUtils.unwrapInvocationTargetException(e);
+ ExceptionUtils.handleThrowable(t);
+ log.warn("Error processing preDestroy on tag instance of "
+ + handler.getClass().getName(), t);
}
}
}
Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java?rev=1201546&r1=1201545&r2=1201546&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java Sun Nov 13 23:39:25 2011
@@ -170,12 +170,11 @@ public class JspServletWrapper {
try {
InstanceManager instanceManager = InstanceManagerFactory.getInstanceManager(config);
servlet = (Servlet) instanceManager.newInstance(ctxt.getFQCN(), ctxt.getJspLoader());
- } catch (IllegalAccessException e) {
- throw new JasperException(e);
- } catch (InstantiationException e) {
- throw new JasperException(e);
} catch (Exception e) {
- throw new JasperException(e);
+ Throwable t = ExceptionUtils
+ .unwrapInvocationTargetException(e);
+ ExceptionUtils.handleThrowable(t);
+ throw new JasperException(t);
}
servlet.init(config);
@@ -481,9 +480,11 @@ public class JspServletWrapper {
try {
instanceManager.destroyInstance(theServlet);
} catch (Exception e) {
+ Throwable t = ExceptionUtils.unwrapInvocationTargetException(e);
+ ExceptionUtils.handleThrowable(t);
// Log any exception, since it can't be passed along
log.error(Localizer.getMessage("jsp.error.file.not.found",
- e.getMessage()), e);
+ e.getMessage()), t);
}
}
}
Modified: tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Set.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Set.java?rev=1201546&r1=1201545&r2=1201546&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Set.java (original)
+++ tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Set.java Sun Nov 13 23:39:25 2011
@@ -156,6 +156,12 @@ public class Set implements TagPlugin {
ctxt.generateJavaSource(" } catch (java.beans.IntrospectionException ex) {");
ctxt.generateJavaSource(" throw new JspException(ex);");
ctxt.generateJavaSource(" } catch (java.lang.reflect.InvocationTargetException ex) {");
+ ctxt.generateJavaSource(" if (ex.getCause() instanceof ThreadDeath) {");
+ ctxt.generateJavaSource(" throw (ThreadDeath) ex.getCause();");
+ ctxt.generateJavaSource(" }");
+ ctxt.generateJavaSource(" if (ex.getCause() instanceof VirtualMachineError) {");
+ ctxt.generateJavaSource(" throw (VirtualMachineError) ex.getCause();");
+ ctxt.generateJavaSource(" }");
ctxt.generateJavaSource(" throw new JspException(ex);");
ctxt.generateJavaSource(" }");
ctxt.generateJavaSource(" }");
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org