Netty 整合 SpringMVC Netty_SpringMVC

GPL
Java 查看源码»
跨平台
2016-11-21
朱君

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);
        }
}
的码云指数为
超过 的项目
加载中

评论(4)

朱君
朱君 软件作者
没有工具要求
相信你自己
相信你自己
封装的不好
不称臣
不称臣
如果是eclipse工具,需要添加什么插件和什么jar包?

暂无资讯

2
回答
SpringMVC中RequestParam注解的使用

@GetMapping(value = "/dopaging") public Payload doPaging(@RequestParam(va...

03/04 19:38
2
回答
Netty发送请求,设置websocketPath路径

Netty发送请求,设置websocketPath路径。服务器这是websocket路径是localhost:8080/ws。 这是服务端的配置,设置了请...

2018/08/10 15:18
5
回答
springmvc自动装箱的问题。获取不到

我一个一个获取就没有问题 为什么我现在用上面的方式进行操作就报错

2017/02/24 14:03
1
回答
一个简单的Spring MVC小例子,为什么总是报404错误

web.xml代码如下: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:...

2017/01/17 16:51
15
回答
ssm整合问题,无法获取数据
Venus_sun 的回答 2017/01/13 09:23
最佳答案
开debug日志看看sql执行了吗,如果执行卡住了那可能就是sql有问题太慢了,如果没有可能就是绑定有问题
1
回答
Mybatis 数据源创建SqlsessionFatory bean 失败

Error creating bean with name 'sqlSessionFactory' defined in class path resou...

2016/12/20 14:59
2
回答
怎么找到spring注解解析器的源码
逝水fox 的回答 2016/12/09 15:45
最佳答案
不限定是哪种注解的话,这问题没法回答。
6
回答
如何识别垃圾程序员 -- 两个凡是

就是弄不清楚输入输出 用N个设计模式, 设计出M个类, 有 P层(继承, implement,接口)乱伦关系 然后产生 N*M*P个BUG 系统特点就两个...

2017/01/12 17:41

没有更多内容

加载失败,请刷新页面

没有更多内容

当javassist遇见Spring boot

最近在开发自己的开源项目REACTIVE DUBBO过程中,需要修改Dubbo的一个工具类RpcUtils,通过选型决定用字节码工具javassist对一个静态方法进行魔改。在编码阶段很顺利实现了我想要的效果,但是...

02/22 00:17
132
0
Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

2018/08/17 22:10
39
0
使用Spring+Maven配置Netty4

原文:http://nerdronix.blogspot.com/2013/06/netty-4-configuration-using-spring-maven.html (需要翻墙) 本文介绍如何使用Spring3.2和Maven配置Netty 4. 源码在github. Spring的配置使用的...

2013/06/22 22:07
3.5K
0
Web Socket 性能对比——Spring Boot vs Tomcat vs Netty

原文链接:https://www.dubby.cn/detail.html?id=9106 统计结果精确到5位小数;每次请求都预热过了 等待上一个消息响应后再发送下一个消息 |实现方式|消息类型|消息长度|发送消息数|总耗时(...

2018/10/18 12:05
58
0
三分钟构建高性能WebSocket服务 | 超优雅的Springboot整合Netty方案

前言 每当使用SpringBoot进行Weboscket开发时,最容易想到的就是spring-boot-starter-websocket(或spring-websocket)。它可以让我们使用注解,很简单的进行Websocket开发,让我们更多的关注...

2018/09/20 15:16
7.1K
10
Java+Netty实现的RESTful框架--netty-rest-server

摘要: 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架提...

2018/06/22 14:56
52
0
SpringCloud Gateway 测试问题解决

本文针对于测试环境SpringCloud Gateway问题解决。 1.背景介绍 本文遇到的问题都是在测试环境真正遇到的问题,不一定试用于所有人,仅做一次记录,便于遇到同样问题的干掉这些问题。 使用版本...

03/14 11:45
3
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部