个人简介

Echo Blog


江湖无名 安心练剑
  • Netty-13-EmbeddedChannel 测试 ChannelHandler
    在这一节中,我们将讲解如何使用EmbeddedChannel 来测试ChannelHandler。 Junit 断言 org.junit.Assert 类提供了很多用于测试的静态方法。 失败的断言将导致一个异常被抛出,并将终止当前正在执行中的测试。 导入这些断言的最高效的方式是通过一个import static 语句来实现: import static org.junit.Asse...
    2017-11-16 11:23:06 | Netty
  • Netty-13-EmbeddedChannel 异常测试
    为什么需要异常处理 有时候网络资源是比较珍贵的,可能是恶意攻击,可能是程序故障。 如果传入一个非常大的字节信息,我们一般应该直接拒绝掉这个请求,而不是消耗大量的资源去处理这个请求。 下面我们一起来写一个关于异常处理的例子。 他类似于前面的入站操作测试。 解码器与测试 入站解码器 package com.github.houbb.netty.inaction.chap09; i...
    2017-11-16 11:23:06 | Netty
  • Netty-13-EmbeddedChannel api
    概述 你已经知道,可以将ChannelPipeline 中的ChannelHandler 实现链接在一起,以构建你的应用程序的业务逻辑。 我们已经在前面解释过,这种设计支持将任何潜在的复杂处理过程分解为小的可重用的组件,每个组件都将处理一个明确定义的任务或者步骤。 在本章中,我们还将展示它是如何简化测试的。 Netty 提供了它所谓的Embedded 传输,用于测试ChannelHa...
    2017-11-16 11:23:06 | Netty
  • Netty-13-单元测试
    单元测试的必要性 ChannelHandler 是 Netty 应用程序的关键元素,所以彻底地测试它们应该是你的开发过程的一个标准部分。 最佳实践要求你的测试不仅要能够证明你的实现是正确的,而且还要能够很容易地隔离那些因修改代码而突然出现的问题。这种类型的测试叫作单元测试。 虽然单元测试没有统一的定义,但是大多数的从业者都有基本的共识。其基本思想是,以尽可能小的区块测试你的代码,并且尽...
    2017-11-16 11:23:06 | Netty
  • Netty-12-关闭
    关闭 引导使你的应用程序启动并且运行起来,但是迟早你都需要优雅地将它关闭。 当然,你也可以让JVM 在退出时处理好一切,但是这不符合优雅的定义,优雅是指干净地释放资源。 关闭Netty应用程序并没有太多的魔法,但是还是有些事情需要记在心上。 最重要的是,你需要关闭EventLoopGroup,它将处理任何挂起的事件和任务,并且随后释放所有活动的线程。 这就是调用 EventLoop...
    2017-11-16 11:23:06 | Netty
  • Netty-12-ServerBoostrap 服务端
    引导服务器 我们将从ServerBootstrap API 的概要视图开始我们对服务器引导过程的概述。 然后,我们将会探讨引导服务器过程中所涉及的几个步骤,以及几个相关的主题,包含从一个ServerChannel 的子Channel 中引导一个客户端这样的特殊情况。 ServerBoostrap 类 名 称 描 述 group 设置ServerBootstrap 要用...
    2017-11-16 11:23:06 | Netty
  • Netty-12-DatagramChannel UDP 无连接协议
    引导 DatagramChannel 前面的引导代码示例使用的都是基于TCP 协议的SocketChannel,但是Bootstrap 类也可以被用于无连接的协议。 为此,Netty 提供了各种 DatagramChannel 的实现。 唯一区别就是,不再调用 connect() 方法,而是只调用 bind() 方法, 代码示例 如代码清单8-8 所示。 import io.ne...
    2017-11-16 11:23:06 | Netty
  • Netty-12-ChannelOption
    使用 Netty 的 ChannelOption 和属性 在每个 Channel 创建时都手动配置它可能会变得相当乏味。 幸运的是,你不必这样做。相反,你可以使用 option() 方法来将 ChannelOption 应用到引导。 你所提供的值将会被自动应用到引导所创建的所有 Channel。 可用的 ChannelOption 包括了底层连接的详细信息,如 keep-alive ...
    2017-11-16 11:23:06 | Netty