`
luckybat
  • 浏览: 32601 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

MINA SOCKET SERVER学习笔记(一)Writing IoFilter

    博客分类:
  • Java
阅读更多

IoFilter

IoFilter is one of the MINA core constructs that serves a very important role. It filters all I/O events and requests between IoService and IoHandler. If you have an experience with web application programming, you can safely think that it's a cousin of Servlet filter. Many out-of-the-box filters are provided to accelerate network application development pace by simplifying typical cross-cutting concerns using the out-of-the-box filters such as:
IoFilter是MINA核心构造之一,扮演非常重要的角色。它过滤所有的I/O事件和请求,这些事件和请求由IoService最终到达IoHandler。假如你有web应用编程的经验,你确实可以把它比作Servlet filter。许多具有独特创意的filters被开发出来以加速网络应用的开发速度,简单、典型、横切关注点地使用这些filters,例如:

  • LoggingFilter logs all events and requests.
    LoggingFilter日志记录所有的事件和请求。
  • ProtocolCodecFilter converts an incoming ByteBuffer into message POJO and vice versa.
    ProtocolCodecFilter将接收的字节流转换为消息POJO等等。
  • CompressionFilter compresses all data.
    CompressionFilter压缩所有的数据。
  • SSLFilter adds SSL - TLS - StartTLS support.
    SSLFilter加入SSL-TLS-StartTLS支持。
  • and many more!
    还有很多!

It's easy to implement an IoFilter in general, but you might also need to know specifics of MINA internals. Any related internal properties will be explained here.

通常,实现一个IoFilter还是很容易的,但是你可能需要了解MINA的内部细节,以下介绍所有相关的内部内容。

 

Overriding Events Selectively

You can extend IoAdapter instead of implementing IoFilter directly. Unless overriden, any received events will be forward to the next filter immediately:
除了直接实现IoFilter,你也可以扩展IoAdapter。除了重载了的事件,任何接收事件都将立即转发到下一个filter。

Transforming a Write Request

If you are going to transform an incoming write request via IoSession.write(), things can get pretty tricky. For example, let's assume your filter transforms HighLevelMessage to LowLevelMessage when IoSession.write() is invoked with a HighLevelMessage object. You could insert appropriate transformation code to your filter's filterWrite() method and think that's all. However, you have to note that you also need to take care of messageSent event because an IoHandler or any filters next to yours will expect messageSent() method is called with HighLevelMessage as a parameter, because it's irrational for the caller to get notified that LowLevelMessage is sent when the caller actually wrote HighLevelMessage. Consequently, you have to implement both filterWrite() and messageSent() if your filter performs transformation.

 

Please also note that you still need to implement similar mechanism even if the types of the input object and the output object are identical (e.g. CompressionFilter) because the caller of IoSession.write() will expect exactly what he wrote in his or her messageSent() handler method.

 

 

 

 

 

分享到:
评论

相关推荐

    Android-MinaSocket一款基于Mina的Socket长连接库

    `Android-MinaSocket` 是一个针对Android平台的长连接库,它基于Apache Mina框架,提供了稳定且高效的网络通信能力。 Apache Mina(Model-View-Controller for Network Applications)是一个高度可扩展和灵活的网络...

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    Mina+Socket通信

    在Mina与Socket通信的实现中,服务端通常使用Mina来创建一个Acceptor,监听特定端口,等待客户端的连接请求。一旦有连接建立,Mina会自动触发相应的事件处理器,开发者可以在其中处理数据读写。以下是一个基本的...

    apache mina 学习笔记三(子项目FtpServer)

    在本学习笔记中,我们将专注于MINA的子项目——FtpServer,它是实现FTP服务器功能的一个模块。 FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在不同主机之间传输文件。Apache MINA FtpServer提供...

    Mina Socket 源代码

    Mina Socket 是 Apache Mina 项目的一部分,它是一个高性能、可扩展的网络通信框架。Mina 提供了一种简单的方式来构建网络应用,如服务器和客户端,支持多种协议,如 TCP/IP 和 UDP。在这个简单示例中,我们将深入...

    mina 服务器socket客服端发消息

    本文将深入探讨如何使用Mina来实现一个服务器以及对应的Socket客户端,从而进行消息传递。 **Mina 框架介绍** Mina提供了一个高级抽象层,允许开发者用类似处理Java IO的方式处理NIO(非阻塞I/O)。它简化了网络...

    MIna2.0学习笔记

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用在开发网络通信应用,如TCP/IP和UDP协议的应用。Mina2.0作为其更新版本,提供了更丰富的功能和优化的性能,使得开发者能更高效地构建网络服务。 *...

    MinaServer for Android

    如果是一个源码项目,开发者可以通过阅读和修改代码来学习MinaServer的实现原理,理解如何在Android环境中配置和使用Apache Mina框架。如果是APK文件,用户可以直接安装到兼容的Android设备上运行和测试MinaServer...

    Mina2.0学习笔记(修订版).

    Apache Mina是一个高性能、事件驱动的网络应用框架,主要用于简化开发服务器端的复杂性,尤其在处理TCP/IP、UDP和SSL/TLS等协议时。它提供了丰富的API和工具,使得开发者能够快速构建网络应用程序,如FTP、SMTP、...

    Mina2.0学习笔记(完整版).doc

    Apache Mina是一个强大的开源框架,专门用于构建高性能、高可扩展性的网络应用程序。Mina2.0是其一个重要的版本,提供了许多改进和新特性,使得开发者能够更轻松地处理网络通信任务,尤其是在Java NIO(Non-blocking...

    apache mina socket

    Apache Mina 2.0.7提供了一个强大而灵活的框架,用于构建高性能的网络应用,特别是基于Socket的通信。通过理解其核心概念和组件,开发者可以轻松地构建出复杂的网络服务,同时利用Java NIO的优势提高系统的并发性和...

    socket通信,mina长连接通信

    总结来说,Socket通信是网络编程的基础,而MINA长连接则是Socket通信的一种优化实现,尤其适合需要高效处理大量并发连接和实时数据交换的场景。在实际开发中,你可以根据项目需求选择适合的技术栈,例如使用MINA来...

    apache mina socket实例

    mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...

    Apache_Mina_Server_ 深入教程V1.0

    为了更好地理解和使用Mina Server 2.0,学习者需要具备以下Java基础知识: - **Java IO**:熟悉Java的输入输出流操作。 - **Java NIO**:理解非阻塞IO的基本原理及其在Java中的实现。 - **Java Socket**:了解如何...

    mina socket客户度工程相关类

    1.mina socket客户度工程相关类,添加mina jar包后可独立运行。 2.mina若有空闲连接则使用已有连接,若无则新建mina连接; 3.mina空闲连接超过保活时间25分钟后,自动删除; 4.mina发送指令后,接收指定时长内收到的...

    socket mina测试框架

    Socket Mina测试框架是一个强大的网络通信应用框架,主要用于简化Java应用程序与远程服务器之间的通信。它提供了高度可扩展和高性能的I/O处理模型,使得开发者能够更专注于业务逻辑,而不是底层的网络实现细节。Mina...

    ftpserver mina框架,适合学习

    Apache Mina FTPServer是一个基于Apache Mina框架的轻量级FTP服务器实现,它为开发者提供了构建自定义FTP服务器的能力。这个框架非常适合初学者学习,因为它提供了清晰的结构和丰富的文档,帮助理解网络通信和FTP...

    Mina server client实例

    通过查看和运行这些代码,我们可以深入学习如何配置和实现Mina Server和Client的具体细节,例如如何定义处理器、如何处理网络事件以及如何进行数据编码和解码。 总的来说,这个实例提供了一个学习和实践Mina框架的...

Global site tag (gtag.js) - Google Analytics