我有一个使用传统BIO(阻止IO)的遗留应用程序(HTTP和原始TCP),我想开始用Netty替换它。
Netty如何与传统的BIO客户合作?如果我先用Netty替换服务器组件并保留BIO客户端,是否有任何问题?
此外,Netty构建的服务器可以替换用于服务器浏览器客户端的典型HTTP Web服务器吗?有问题吗?
由于
答案 0 :(得分:3)
我的理解是netty支持阻塞(org.jboss.netty.channel.socket.oio
)和非阻塞(org.jboss.netty.channel.socket.nio
)操作。请参阅http://docs.jboss.org/netty/3.2/guide/html/architecture.html第2.2节。
很容易在阻止和非阻塞之间切换,因此您可以尝试使用NIO,如果不能与您的客户端一起使用,则可以切换到OIO。您可以在设置为ChannelFactory
的情况下设置要支持的IO类型// NIO - non blocking
ChannelFactory factory =
new NioSeverSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
//OIO - blocking
ChannelFactory factory =
new OioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
现有一些基于netty的HTTP Web服务器/框架已经实现。例如,webbit,xitrum和play framework。我相信还有更多。这些只是我能想到的那些。
如果您希望实现自己的,org.jboss.netty.example.http
包中的示例是一个很好的起点。