netty是继mina之后一个非常受欢迎的nio网络框架(其实netty的主程就是mina的主程).
其实netty的介绍就不说了,去看项目介绍吧,直接上代码
httpserver启动和配置类
import static org.jboss.netty.channel.Channels.pipeline;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
import org.jboss.netty.handler.codec.http.HttpChunkAggregator;
import org.jboss.netty.handler.codec.http.HttpRequestDecoder;
import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
import org.jboss.netty.handler.stream.ChunkedWriteHandler;
/**
* 后台管理服务
*
* @author javagg
*
*/
public class AdminServer {
public static void main(String[] args) {
start(8080);
}
public static void start(int port) {
// 配置服务器-使用java线程池作为解释线程
ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
// 设置 pipeline factory.
bootstrap.setPipelineFactory(new ServerPipelineFactory());
// 绑定端口
bootstrap.bind(new InetSocketAddress(port));
System.out.println(“admin start on ”+port);
}
private static class ServerPipelineFactory implements
ChannelPipelineFactory {
public ChannelPipeline getPipeline() throws Exception {
// Create a default pipeline implementation.
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast(“decoder”, new HttpRequestDecoder());
pipeline.addLast(“encoder”, new HttpResponseEncoder());
//http处理handler
pipeline.addLast(“handler”, new AdminServerHandler());
return pipeline;
}
}
}
阅读全文…
java
netty
Netty是JBoss出品的高效的Java NIO开发框架,关于其使用,可参考我的另一篇文章 netty使用初步。本文将主要分析Netty实现方面的东西,由于精力有限,本人并没有对其源码做了极细致的研 究。如果下面的内容有错误或不严谨的地方,也请指正和谅解。对于Netty使用者来说,Netty提供了几个典型的example,并有详尽的API doc和guide doc,本文的一些内容及图示也来自于Netty的文档,特此致谢。
阅读全文…
java
netty, nio
本指南对Netty 进行了介绍并指出其意义所在。
1. 问题
现在,我们使用适合一般用途的应用或组件来和彼此通信。例如,我们常常使用一个HTTP客户端从远程服务器获取信息或者通过web services进行远程方法的调用。
然而,一个适合普通目的的协议或其实现并不具备其规模上的扩展性。例如,我们无法使用一个普通的HTTP服务器进行大型文件,电邮信息的交互,或者处理金融信息和多人游戏数据那种要求准实时消息传递的应用场景。因此,这些都要求使用一个适用于特殊目的并经过高度优化的协议实现。例如,你可能想要实现一个对基于AJAX的聊天应用,媒体流或大文件传输进行过特殊优化的HTTP服务器。你甚至可能想去设计和实现一个全新的,特定于你的需求的通信协议。
阅读全文…
java
netty, nio
Comet是一个时髦词语,象ajax一样,非常Cool。Comet的主要作用是,服务器可以把新数据主动传送给客户端。
我认为,Comet将是下一波互联网应用更新潮的主流.象google wave使用Comet一样,实现实时更新.
Plurkr 的增长速度非常快,我们正在成为最大的Python网站之一,我们的每天都有10w+的在线用户。
我们大约用了一个星期寻找不同的解决方案.
阅读全文…
java
Comet, java, netty, nio
最近评论