Netty 整合 SpringMVC Netty_SpringMVC

码农软件 · 软件分类 · 并发/并行处理框架 · 2019-09-02 15:27:23

软件介绍

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<SocketChannel>()  {
                        @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);
        }
}

本文地址:https://codercto.com/soft/d/13722.html

从点子到产品

从点子到产品

刘飞 / 电子工业出版社 / 2017-1-1 / 49.00元

《从点子到产品:产品经理的价值观与方法论》以产品经理的方法论与价值观为主线,讲述了产品经理在从点子到产品的过程中应该考虑的问题、思考问题的思路,以及如何解决问题的方法。第一部分主要讲述从粗略的点子到具体的方案,要经历的步骤。第二部分主要讲述如何落实方案,以及如何进行用户研究、需求分析和产品设计。第三部分主要讲述在落实方案的过程中要掌握的方法和管理技巧。最后一部分主要讲述产品经理在工作和成长过程中要......一起来看看 《从点子到产品》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换