为什么底层要使用Netty

原来在使用RESTEasy的时候底层使用的是Tomcat,但是Tomcat的I/O性能不如Netty,一直想把Tomcat换成Netty,最近有时间就更换一下。

怎么使用

首先看一下对应依赖

        <dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>${resteasy.version}</version></dependency><dependency><groupId>io.netty</groupId><artifactId>netty</artifactId><version>${netty.version}</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-netty</artifactId><version>${resteasy.version}</version><exclusions><exclusion><groupId>io.netty</groupId><artifactId>netty</artifactId></exclusion></exclusions></dependency>

Jboss提供了RESTEasy对netty的支持,直接引入就好。

下面是实现的服务启动的代码

public class RestNettyServer implements RestServer {private String rootResourcePath = "/";private String hostName;private int port = 8341;private int ioWorkerCount = Runtime.getRuntime().availableProcessors() * 4;private int executorThreadCount = 16;private SSLContext sslContext = null;private int maxRequestSize = 10 * 1024 * 1024;private NettyJaxrsServer nettyServer;private ResteasyDeployment deployment = new ResteasyDeployment();public void start() {nettyServer = new NettyJaxrsServer();nettyServer.setDeployment(deployment);nettyServer.setPort(port);nettyServer.setRootResourcePath(rootResourcePath);nettyServer.setIoWorkerCount(ioWorkerCount);nettyServer.setExecutorThreadCount(executorThreadCount);nettyServer.setMaxRequestSize(maxRequestSize);nettyServer.setSSLContext(sslContext);nettyServer.setKeepAlive(true);if (hostName != null && "".equals(hostName)) {nettyServer.setHostname(hostName.trim());}nettyServer.setSecurityDomain(null);nettyServer.start();System.out.println("Netty rest server started on port(s): " + port);}public void addProvider(Collection<Object> providers) {if (providers != null && !providers.isEmpty()) {deployment.getProviders().addAll(providers);}}public void addResources(Collection<Object> instances) {if (instances != null && !instances.isEmpty()) {deployment.getResources().addAll(instances);}}}

代码在这里resteasy-netty不能上传免费的了,必须要积分,大家见谅吧。

RESTEasy底层使用Netty相关推荐

  1. NIO介绍与Netty通信简单入门

    NIO同步阻塞与同步非阻塞 BIO与NIO IO(BIO)和NIO区别:其本质就是阻塞和非阻塞的区别 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,就会一直等待,直到传输完毕为止. 非 ...

  2. Netty学习总结(2)——Netty的高性能架构之道

    Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用 ...

  3. [Netty]pipeline(二)

    作者:简书闪电侠 链接:https://www.jianshu.com/p/087b7e9a27a2 前言 netty源码分析之pipeline(一)中,我们已经了解了pipeline在netty中所 ...

  4. Netty的高低水位

    假如我们的底层使用Netty作为网络通信框架,业务流程在将业务数据发送到对端之前,实际先要将数据发送到Netty的缓冲区中,然后再从Netty的缓冲区发送到TCP的缓冲区,最后再到对端. 业务数据不可 ...

  5. 一篇文章,读懂Netty的高性能架构之道

    Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用 ...

  6. java restful netty_Java RESTful 框架的性能比较

    来源:鸟窝 , colobu.com/2015/11/17/Jax-RS-Performance-Comparison/在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单 ...

  7. Java RESTful 框架的性能比较

    在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元. 微服 ...

  8. nx set 怎么实现的原子性_基于Redis的分布式锁实现

    前言 本篇文章主要介绍基于Redis的分布式锁实现到底是怎么一回事,其中参考了许多大佬写的文章,算是对分布式锁做一个总结 分布式锁概览 在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问 ...

  9. 一文带你彻底了解Java异步

    随着RxJava.Reactor等异步框架的流行,异步编程受到了越来越多的关注,尤其是在IO密集型的业务场景中,相比传统的同步开发模式,异步编程的优势越来越明显. 那到底什么是异步编程?异步化真正的好 ...

最新文章

  1. 新一代算法模型:从搜索、推荐到广告!
  2. windows ssh secure shell设置初始窗口大小
  3. python怎么画条形图-如何按python中的值分组绘制条形图?
  4. 每天一香蕉,长成螺纹钢
  5. IIS_FastCGI+php5.3+wincache+memcached+ZendLoader
  6. 怎样将压缩文件上传到服务器上
  7. 重拾Javascript(四) 运动 图片的淡入淡出
  8. 如何控制Go编码JSON数据时的行为
  9. lsqnonlin函数_matlab非线性最小二乘函数
  10. 广州大学数据库实验报告_广州大学学生Access数据库实验1_表的创建和操作
  11. ElasticSearch全文搜索引擎之入门以及环境搭建
  12. 51单片机——红外解码
  13. 服务器部署文档模板,完整word版)部署文档模板
  14. 用JavaScript实现用户登录验证、注册信息格式检验(附代码)
  15. 泛泰A870(高通APQ8064t 600 cpu) Mokee4.4.2(Android4.4) 图赏
  16. 公交车查询系统软件测试,公交APP评测:谁是最好用的公交线路查询软件?
  17. 使用userAgent区分浏览器版本
  18. 蹦的一下,又来一个新属性scrollbar-gutter
  19. SE-Net整理阅读
  20. PS-怎么用ps查看精灵图(雪碧图)的位置?

热门文章

  1. 医院网络营销开展流程
  2. php中插入表格 标签,列表,表格,添加表单及标签用法-2019.9.1
  3. 多线程之旅(10)_QueueUserWorkItem和UnsafeQueueUserWorkItem的区别
  4. pydub 部分 api 介绍
  5. Listen、Attention、Spell模型
  6. 倾斜摄影超大场景的三维模型OSGB格式转换3DTILES,为什么数据文件大小会变大?
  7. 负载测试、压力测试和性能测试的区别
  8. 后验概率与条件概率区别
  9. uni-app注册全局组件 - 符合easycom
  10. JAVA计算机毕业设计云端存储的待办清单的设计Mybatis+系统+数据库+调试部署