查看文檔:http://netty.io/docs/stable/guide/html/。向下滾動至第9節。關閉應用程序。
你的主要應用AHS看起來是這樣的:
package org.jboss.netty.example.time;
public class TimeServer {
static final ChannelGroup allChannels = new DefaultChannelGroup("time-server"(35));
public static void main(String[] args) throws Exception {
...
ChannelFactory factory = ...;
ServerBootstrap bootstrap = ...;
...
Channel channel = bootstrap.bind(...);
allChannels.add(channel);
...
// Shutdown code
ChannelGroupFuture future = allChannels.close();
future.awaitUninterruptibly();
factory.releaseExternalResources();
}
}
您處理器需要:
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {
TimeServer.allChannels.add(e.getChannel());
}
你必須:1。 存儲所有你在ChannelGroup
2.通道關閉時關閉所有頻道並釋放資源。
希望這會有所幫助。
我只是使用netty示例中給出的HttpSnoopServer(org.jboss.netty.example.http.snoop)。我在服務器處理程序中看到以下代碼。 ChannelFuture future = e.getChannel()。write(response); //寫入操作完成後關閉非保持連接。 if(!keepAlive) { future.addListener(ChannelFutureListener.CLOSE); }' 和你在那裏指定的不一樣嗎? –