You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2004/02/12 21:52:52 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session LocalStrings.properties StandardSession.java
markt 2004/02/12 12:52:52
Modified: catalina/src/share/org/apache/catalina/session
LocalStrings.properties StandardSession.java
Log:
Fix bug 14283. Catch and log exceptions in listeners. Reported by Eddie Ruvinsky.
Revision Changes Path
1.13 +1 -0 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/LocalStrings.properties
Index: LocalStrings.properties
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/LocalStrings.properties,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- LocalStrings.properties 31 Dec 2002 12:56:35 -0000 1.12
+++ LocalStrings.properties 12 Feb 2004 20:52:52 -0000 1.13
@@ -34,6 +34,7 @@
standardManager.managerLoad=Exception loading sessions from persistent storage
standardManager.managerUnload=Exception unloading sessions to persistent storage
standardSession.attributeEvent=Session attribute event listener threw exception
+standardSession.bindingEvent=Session binding event listener threw exception
standardSession.invalidate.ise=invalidate: Session already invalidated
standardSession.isNew.ise=isNew: Session already invalidated
standardSession.getAttribute.ise=getAttribute: Session already invalidated
1.38 +33 -14 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java
Index: StandardSession.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- StandardSession.java 18 Jan 2004 20:38:35 -0000 1.37
+++ StandardSession.java 12 Feb 2004 20:52:52 -0000 1.38
@@ -78,7 +78,6 @@
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
@@ -696,8 +695,11 @@
if (attribute instanceof HttpSessionActivationListener) {
if (event == null)
event = new HttpSessionEvent(this);
- // FIXME: Should we catch throwables?
- ((HttpSessionActivationListener)attribute).sessionWillPassivate(event);
+ try {
+ ((HttpSessionActivationListener)attribute).sessionWillPassivate(event);
+ } catch (Throwable t) {
+ log(sm.getString("standardSession.attributeEvent"), t);
+ }
}
}
@@ -718,8 +720,11 @@
if (attribute instanceof HttpSessionActivationListener) {
if (event == null)
event = new HttpSessionEvent(this);
- // FIXME: Should we catch throwables?
- ((HttpSessionActivationListener)attribute).sessionDidActivate(event);
+ try {
+ ((HttpSessionActivationListener)attribute).sessionDidActivate(event);
+ } catch (Throwable t) {
+ log(sm.getString("standardSession.attributeEvent"), t);
+ }
}
}
@@ -1150,8 +1155,13 @@
HttpSessionBindingEvent event =
new HttpSessionBindingEvent((HttpSession) this, name, value);
if ((value != null) &&
- (value instanceof HttpSessionBindingListener))
- ((HttpSessionBindingListener) value).valueUnbound(event);
+ (value instanceof HttpSessionBindingListener)) {
+ try {
+ ((HttpSessionBindingListener) value).valueUnbound(event);
+ } catch (Throwable t) {
+ log(sm.getString("standardSession.bindingEvent"), t);
+ }
+ }
// Notify interested application event listeners
Context context = (Context) manager.getContainer();
@@ -1255,8 +1265,13 @@
((HttpSession) this, name, value);
// Call the valueBound() method if necessary
- if (value instanceof HttpSessionBindingListener)
+ if (value instanceof HttpSessionBindingListener) {
+ try {
((HttpSessionBindingListener) value).valueBound(event);
+ } catch (Throwable t) {
+ log(sm.getString("standardSession.bindingEvent"), t);
+ }
+ }
// Replace or add this attribute
Object unbound = null;
@@ -1268,8 +1283,12 @@
// Call the valueUnbound() method if necessary
if ((unbound != null) &&
(unbound instanceof HttpSessionBindingListener)) {
- ((HttpSessionBindingListener) unbound).valueUnbound
- (new HttpSessionBindingEvent((HttpSession) this, name));
+ try {
+ ((HttpSessionBindingListener) unbound).valueUnbound
+ (new HttpSessionBindingEvent((HttpSession) this, name));
+ } catch (Throwable t) {
+ log(sm.getString("standardSession.bindingEvent"), t);
+ }
}
// Replace the current event with one containing
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org