You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/07/24 15:53:29 UTC
svn commit: r1692518 - in
/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal:
registry/EventListenerRegistry.java whiteboard/WhiteboardManager.java
Author: cziegeler
Date: Fri Jul 24 13:53:29 2015
New Revision: 1692518
URL: http://svn.apache.org/r1692518
Log:
Catch potential exceptions from serlvet context listener
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java?rev=1692518&r1=1692517&r2=1692518&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java Fri Jul 24 13:53:29 2015
@@ -35,6 +35,7 @@ import javax.servlet.http.HttpSessionIdL
import javax.servlet.http.HttpSessionListener;
import org.apache.felix.http.base.internal.handler.ListenerHandler;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.apache.felix.http.base.internal.runtime.ListenerInfo;
import org.osgi.service.http.runtime.dto.FailedListenerDTO;
import org.osgi.service.http.runtime.dto.ListenerDTO;
@@ -129,7 +130,7 @@ public final class EventListenerRegistry
*/
public void removeListeners(@Nonnull final ListenerInfo info)
{
- // each listener map returns the same handler, we just need it once to destory
+ // each listener map returns the same handler, we just need it once to destroy
ListenerHandler handler = null;
if ( info.isListenerType(ServletContextListener.class.getName()))
{
@@ -176,7 +177,7 @@ public final class EventListenerRegistry
final ServletContextListener listener = (ServletContextListener)l.getListener();
if ( listener != null )
{
- listener.contextInitialized(new ServletContextEvent(l.getContext()));
+ contextInitialized(l.getListenerInfo(), listener, new ServletContextEvent(l.getContext()));
}
}
}
@@ -187,7 +188,7 @@ public final class EventListenerRegistry
final ServletContextListener listener = (ServletContextListener) l.getListener();
if ( listener != null )
{
- listener.contextDestroyed(new ServletContextEvent(l.getContext()));
+ contextDestroyed(l.getListenerInfo(), listener, new ServletContextEvent(l.getContext()));
}
}
}
@@ -336,4 +337,34 @@ public final class EventListenerRegistry
dto.listenerDTOs = listenerDTOs.toArray(new ListenerDTO[listenerDTOs.size()]);
}
}
+
+ public static void contextInitialized(
+ @Nonnull final ListenerInfo info,
+ @Nonnull final ServletContextListener listener,
+ @Nonnull final ServletContextEvent event)
+ {
+ try
+ {
+ listener.contextInitialized(event);
+ }
+ catch (final Throwable t)
+ {
+ SystemLogger.error(info.getServiceReference(), "Exception while calling servlet context listener.", t);
+ }
+ }
+
+ public static void contextDestroyed(
+ @Nonnull final ListenerInfo info,
+ @Nonnull final ServletContextListener listener,
+ @Nonnull final ServletContextEvent event)
+ {
+ try
+ {
+ listener.contextDestroyed(event);
+ }
+ catch (final Throwable t)
+ {
+ SystemLogger.error(info.getServiceReference(), "Exception while calling servlet context listener.", t);
+ }
+ }
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java?rev=1692518&r1=1692517&r2=1692518&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java Fri Jul 24 13:53:29 2015
@@ -50,6 +50,7 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.handler.WhiteboardListenerHandler;
import org.apache.felix.http.base.internal.handler.WhiteboardServletHandler;
import org.apache.felix.http.base.internal.logger.SystemLogger;
+import org.apache.felix.http.base.internal.registry.EventListenerRegistry;
import org.apache.felix.http.base.internal.registry.HandlerRegistry;
import org.apache.felix.http.base.internal.runtime.AbstractInfo;
import org.apache.felix.http.base.internal.runtime.FilterInfo;
@@ -588,7 +589,7 @@ public final class WhiteboardManager
final ServletContextListener listener = (ServletContextListener)handler.getListener();
if ( listener != null )
{
- listener.contextInitialized(new ServletContextEvent(handler.getContext()));
+ EventListenerRegistry.contextInitialized(handler.getListenerInfo(), listener, new ServletContextEvent(handler.getContext()));
}
}
}
@@ -633,7 +634,7 @@ public final class WhiteboardManager
final ServletContextListener listener = (ServletContextListener) handler.getListener();
if ( listener != null )
{
- listener.contextDestroyed(new ServletContextEvent(handler.getContext()));
+ EventListenerRegistry.contextDestroyed(handler.getListenerInfo(), listener, new ServletContextEvent(handler.getContext()));
}
}
}