[
https://issues.apache.org/jira/browse/DIRMINA-889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julien Vermillard resolved DIRMINA-889.
---------------------------------------
Resolution: Fixed
Assignee: Julien Vermillard
I created a new set of Exception for MINA 3 whcih (I hope) are more explicit.
and the default IoHandler behaviour is to clsoe the connection if an exception
is raised (fail-fast).
Feel free to reopen or send a mail if you have any comments
> MINA is lacking a set of exceptions to properly inform the user about what is
> going on
> --------------------------------------------------------------------------------------
>
> Key: DIRMINA-889
> URL: https://issues.apache.org/jira/browse/DIRMINA-889
> Project: MINA
> Issue Type: Improvement
> Affects Versions: 2.0.4
> Reporter: Alex C.
> Assignee: Julien Vermillard
> Fix For: 3.0.0-M1
>
>
> following scenario:
> A MINA powered server application is reading data from network, which is sent
> by any client. While server is getting data, the connection get's broken. The
> read() from server is interrupted and exceptionCaught() in IoHandler is
> called.
> Currently, my exceptionCaught() implementation looks like this:
> ----
> @Override
> public void exceptionCaught(IoSession session, Throwable throwable)
> throws Exception {
> logger.error("exception Caught. session={}. Exception:\n {}", new
> Object[]{Utils.longToHexString(session.getId()),
> Utils.getStackTraceAsString(throwable)});
> logger.debug("Closing the session now! session={}",
> Utils.longToHexString(session.getId()));
> session.close(true);
> }
> ----
> Problem is, that I don't know how to differentiate between "real and
> important exceptions", which need to be logged more prominent and exception
> which might occur because of a client has been disconnected correctly (broken
> network connection). if a connection get's broken, I just get a generic
> IOException:
> ----
> Feb 21, 2012 5:10:20 PM de.root1.simon.Dispatcher exceptionCaught
> Schwerwiegend: exception Caught. session=0x00000002. Exception:
> java.io.IOException: Die Verbindung wurde vom Kommunikationspartner
> zurückgesetzt
> at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
> at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
> at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:218)
> at sun.nio.ch.IOUtil.read(IOUtil.java:191)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
> at
> org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:280)
> at
> org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:44)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:695)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
> at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> ----
> There should be some MINA exceptions handling (f.i. in this special scenario
> a kihd of "UnexpectedlyClosedConnectionException" or so) this kind of
> problems, so that one can differentiate the exceptions in "exceptionCaught"
> to know what really happened somewhere deep in MINA.
> Alternatively, there could be some error-codes. But would really prefer the
> solution with the MINA exceptions ...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira