Author: trustin
Date: Sun Mar 9 22:45:59 2008
New Revision: 635436
URL: http://svn.apache.org/viewvc?rev=635436&view=rev
Log:
Resolved issue: DIRMINA-540 (An exception raised by IoServiceListener can lead
to unexpected behavior of MINA core.)
* Better exception handling when an exception is thrown by a user
IoServiceListere
* Removed a compiler warning
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
mina/trunk/core/src/main/java/org/apache/mina/util/Log4jXmlFormatter.java
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java?rev=635436&r1=635435&r2=635436&view=diff
==============================================================================
---
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
(original)
+++
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
Sun Mar 9 22:45:59 2008
@@ -29,6 +29,7 @@
import java.util.Map;
import java.util.Set;
+import org.apache.mina.common.ExceptionMonitor;
import org.apache.mina.common.IoAcceptorConfig;
import org.apache.mina.common.IoConnector;
import org.apache.mina.common.IoFuture;
@@ -126,8 +127,12 @@
synchronized (listeners) {
for (Iterator i = listeners.iterator(); i.hasNext();) {
- ((IoServiceListener) i.next()).serviceActivated(service,
- serviceAddress, handler, config);
+ try {
+ ((IoServiceListener) i.next()).serviceActivated(service,
+ serviceAddress, handler, config);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
}
@@ -148,8 +153,12 @@
try {
synchronized (listeners) {
for (Iterator i = listeners.iterator(); i.hasNext();) {
- ((IoServiceListener) i.next()).serviceDeactivated(service,
- serviceAddress, handler, config);
+ try {
+ ((IoServiceListener)
i.next()).serviceDeactivated(service,
+ serviceAddress, handler, config);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
} finally {
@@ -196,7 +205,11 @@
// Fire listener events.
synchronized (listeners) {
for (Iterator i = listeners.iterator(); i.hasNext();) {
- ((IoServiceListener) i.next()).sessionCreated(session);
+ try {
+ ((IoServiceListener) i.next()).sessionCreated(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
}
@@ -234,7 +247,11 @@
try {
synchronized (listeners) {
for (Iterator i = listeners.iterator(); i.hasNext();) {
- ((IoServiceListener) i.next()).sessionDestroyed(session);
+ try {
+ ((IoServiceListener)
i.next()).sessionDestroyed(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
} finally {
Modified:
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java?rev=635436&r1=635435&r2=635436&view=diff
==============================================================================
---
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
(original)
+++
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
Sun Mar 9 22:45:59 2008
@@ -29,6 +29,7 @@
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.CountDownLatch;
+import org.apache.mina.common.ExceptionMonitor;
import org.apache.mina.common.IoAcceptorConfig;
import org.apache.mina.common.IoConnector;
import org.apache.mina.common.IoFuture;
@@ -116,7 +117,11 @@
}
for (IoServiceListener listener : listeners) {
- listener.serviceActivated(service, serviceAddress, handler,
config);
+ try {
+ listener.serviceActivated(service, serviceAddress, handler,
config);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
@@ -133,8 +138,12 @@
try {
for (IoServiceListener listener : listeners) {
- listener.serviceDeactivated(service, serviceAddress, handler,
- config);
+ try {
+ listener.serviceDeactivated(service, serviceAddress,
handler,
+ config);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
} finally {
disconnectSessions(serviceAddress, config);
@@ -178,7 +187,11 @@
// Fire listener events.
for (IoServiceListener listener : listeners) {
- listener.sessionCreated(session);
+ try {
+ listener.sessionCreated(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
@@ -210,7 +223,11 @@
// Fire listener events.
try {
for (IoServiceListener listener : listeners) {
- listener.sessionDestroyed(session);
+ try {
+ listener.sessionDestroyed(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
} finally {
// Fire a virtual service deactivation event for the last session
of the connector.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java?rev=635436&r1=635435&r2=635436&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
Sun Mar 9 22:45:59 2008
@@ -120,7 +120,11 @@
activationTime = System.currentTimeMillis();
for (IoServiceListener l : listeners) {
- l.serviceActivated(service);
+ try {
+ l.serviceActivated(service);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
@@ -134,7 +138,11 @@
}
for (IoServiceListener l : listeners) {
- l.serviceIdle(service, status);
+ try {
+ l.serviceIdle(service, status);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
@@ -150,7 +158,11 @@
try {
for (IoServiceListener l : listeners) {
- l.serviceDeactivated(service);
+ try {
+ l.serviceDeactivated(service);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
} finally {
disconnectSessions();
@@ -190,7 +202,11 @@
// Fire listener events.
for (IoServiceListener l : listeners) {
- l.sessionCreated(session);
+ try {
+ l.sessionCreated(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
}
@@ -209,7 +225,11 @@
// Fire listener events.
try {
for (IoServiceListener l : listeners) {
- l.sessionDestroyed(session);
+ try {
+ l.sessionDestroyed(session);
+ } catch (Throwable e) {
+ ExceptionMonitor.getInstance().exceptionCaught(e);
+ }
}
} finally {
// Fire a virtual service deactivation event for the last session
of the connector.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/util/Log4jXmlFormatter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/util/Log4jXmlFormatter.java?rev=635436&r1=635435&r2=635436&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/util/Log4jXmlFormatter.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/util/Log4jXmlFormatter.java
Sun Mar 9 22:45:59 2008
@@ -72,6 +72,7 @@
return properties;
}
+ @SuppressWarnings("unchecked")
public String format(final LogRecord record) {
// Reset working buffer. If the buffer is too large, then we need a new
// one in order to avoid the penalty of creating a large array.