Netty 整合 SpringMVC Netty_SpringMVC

Netty_SpringMVC 详细介绍 Netty 整合 SpringFramework 代码示例。

启动类代码:

package cn.ranko.api; import cn.ranko.framework.core.RankoServer; /**

  • Created by zhujun on 2016/8/11.
  • 测试地址:http://localhost:8200/api-demo/test.action
  • 内容返回:{"demoId":1,"demoStr":"test1"}

*/ public class ApiServer { private static RankoServer server; public static void main(String[] args) throws Exception { int serverPort = Integer.parseInt(args.length > 0 && args[0] != null ? args[0] : "8200"); server = new RankoServer(serverPort); server.start(); } } 整合代码:

package cn.ranko.framework.core; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponseEncoder; import io.netty.handler.stream.ChunkedWriteHandler; import org.apache.log4j.Logger; import org.springframework.mock.web.MockServletContext; import javax.servlet.ServletException; /**

  • Created by zhujun on 2016/6/20. */ public class RankoServer { private Logger logger = Logger.getLogger(getClass().getName()); private int serverPort; private ServerBootstrap bootstrap; public RankoServer(int serverPort) { this.serverPort = serverPort; } public void start() throws InterruptedException, ServletException { if (this.bootstrap != null) { throw new IllegalStateException("Server is started, please do not repeat"); } bootstrap = new ServerBootstrap(); ApplicationContextHolder.init(); bootstrap.group(new NioEventLoopGroup(), new NioEventLoopGroup()).channel( NioServerSocketChannel.class).childHandler(new ChannelInitializer() { @Override protected void initChannel(SocketChannel socketChannel) throws Exception { ChannelPipeline pipeline = socketChannel.pipeline(); pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast("aggregator", new HttpObjectAggregator(65536)); // 上传限制3M pipeline.addLast("encoder", new HttpResponseEncoder()); pipeline.addLast("chunkedWriter", new ChunkedWriteHandler()); pipeline.addLast("handler",new DispatcherServletHandler(ApplicationContextHolder.getDispatcherServlet())); } }); ChannelFuture f = bootstrap.bind(this.serverPort).sync();// 配置完成,开始绑定server,通过调用sync同步方法阻塞直到绑定成功 f.channel().closeFuture().sync();// 应用程序会一直等待,直到channel关闭 logger.info("server listens to port " + this.serverPort); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值