Netty: ClosedChannelException при закрытии канала

Почему, когда я пытаюсь закрыть канал, у меня возникает исключение ChannelClosedException? Закрытие с помощью Channel.close(), трассировка стека исключения:

java.nio.channels.ClosedChannelException
    at org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:645)
    at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:601)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60)
    at org.jboss.netty.channel.Channels.close(Channels.java:720)
    at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:200)
    at ru.greencubes.player.PlayerWorkerThread.closeConnection(PlayerWorkerThread.java:107)
    at ru.greencubes.player.PlayerWorkerThread.shutDown(PlayerWorkerThread.java:282)
    at ru.greencubes.player.NetworkPlayerThread.disconnect(NetworkPlayerThread.java:1289)
    at ru.greencubes.player.NetworkPlayerThread.disconnect(NetworkPlayerThread.java:1272)
    at ru.greencubes.server.Server.run(Server.java:1590)
    at ru.greencubes.server.ServerThread.run(ServerThread.java:12)

person Eirenliel    schedule 15.01.2012    source источник


Ответы (1)


Я думаю, вы должны просто игнорировать это. Он просто сказал вам, что канал уже был закрыт, когда попытался записать оставшиеся байты в канал. Так что не о чем беспокоиться.

person Norman Maurer    schedule 15.01.2012
comment
У меня такая же проблема. Есть ли способ гарантировать, что оставшиеся байты будут записаны в канал перед его закрытием? У меня есть что-то вроде ch.write(msg); ch.close(); - person Dennis; 19.01.2012
comment
Да... Используйте ChannelFuture. ch.write(msg).addListener(ChannelFuture.CLOSE); - person Norman Maurer; 19.01.2012
comment
CLOSE не существует в ChannelFuture. - person Dennis; 23.01.2012
comment
Извините, это ChannelFutureListener.CLOSE - person Norman Maurer; 23.01.2012
comment
Кажется, моя проблема — другая, которую мы обсуждаем здесь: stackoverflow.com/questions/8975009 - person Dennis; 24.01.2012