- 浏览: 950666 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
Mina 过滤链抽象实现:http://donald-draper.iteye.com/blog/2376335
在上面这篇文章中,当IOService接收消息后,消息被过滤链上的过滤器过滤,从链头到链尾,过程如下:
//消息接收,从链头到链尾-》Iohanlder(这个过程handler处理相关事件)
从上可以看出IoService接收消息后,消息过滤链中的过滤器(协议解码器等)过滤后,最后交给会话handler处理,即IoHandler,今天我们来看一下IoHandler。
//IoHandlerAdapter
在上面这篇文章中,当IOService接收消息后,消息被过滤链上的过滤器过滤,从链头到链尾,过程如下:
//消息接收,从链头到链尾-》Iohanlder(这个过程handler处理相关事件)
public void fireMessageReceived(IoSession session, Object message) { Entry head = this.head; callNextMessageReceived(head, session, message); } private void callNextMessageReceived(Entry entry, IoSession session, Object message) { try { entry.getFilter().messageReceived(entry.getNextFilter(), session, message); } catch (Throwable e) { fireExceptionCaught(session, e); } }
private static class TailFilter extends IoFilterAdapter { private static class TailFilter extends IoFilterAdapter { ... public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { try { session.getHandler().messageReceived(session, message); } finally { //如果发送消息对象为ByteBuffer,则释放buffer ByteBufferUtil.releaseIfPossible(message); } } ... } }
从上可以看出IoService接收消息后,消息过滤链中的过滤器(协议解码器等)过滤后,最后交给会话handler处理,即IoHandler,今天我们来看一下IoHandler。
/** * Handles all I/O events fired by MINA. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev$, $Date$ * * @see IoHandlerAdapter */ public interface IoHandler { /** * Invoked from an I/O processor thread when a new connection has been created. * Because this method is supposed to be called from the same thread that * handles I/O of multiple sessions, please implement this method to perform * tasks that consumes minimal amount of time such as socket parameter * and user-defined session attribute initialization. 当一个新的连接创建时,有IO处理器线程调用此方法。由于此方法可以被相同的线程调用, 处理多个会话IO,所以实现此方法时,执行任务时,尽量消耗尽少的时间,比如做一些Socket参数配置, 用户自定义的会话属性 */ void sessionCreated(IoSession session) throws Exception; /** * Invoked when a connection has been opened. This method is invoked after * {@link #sessionCreated(IoSession)}. The biggest difference from * {@link #sessionCreated(IoSession)} is that it's invoked from other thread * than an I/O processor thread once thread modesl is configured properly. 当一个连接打开时调用此方法。此方法在会话创建后调用。与会话创建方法不同的是, 一旦线程模型配置,会话打开被其他线程调用,而不是IO处理器。 */ void sessionOpened(IoSession session) throws Exception; /** * Invoked when a connection is closed.当连接关闭时,调用。 */ void sessionClosed(IoSession session) throws Exception; /** * Invoked with the related {@link IdleStatus} when a connection becomes idle. * This method is not invoked if the transport type is UDP; it's a known bug, * and will be fixed in 2.0. 当连接空闲时,sessionIdle方法被相关空闲状态调用。如果传输接口为UDP,此方法不会调用, 这是一个已知的bug,在2.0版本修复 */ void sessionIdle(IoSession session, IdleStatus status) throws Exception; /** * Invoked when any exception is thrown by user {@link IoHandler} * implementation or by MINA. If <code>cause</code> is instanceof * {@link IOException}, MINA will close the connection automatically. 当用户的IO处理器抛出异常时,方法有mina调用。如果异常为IOException,mina将 自动关闭连接。 */ void exceptionCaught(IoSession session, Throwable cause) throws Exception; /** * Invoked when a message is received.接收消息时,调用 */ void messageReceived(IoSession session, Object message) throws Exception; /** * Invoked when a message written by {@link IoSession#write(Object)} is * sent out. 当消息被Io会话write方法发送出去后,调用 */ void messageSent(IoSession session, Object message) throws Exception; }
//IoHandlerAdapter
/** * An abstract adapter class for {@link IoHandler}. You can extend this * class and selectively override required event handler methods only. All * methods do nothing by default. * IoHandlerAdapter为IO处理器的简单实现。你可以扩展此类或重写需要关注的事件处理方法, 默认所有方法什么都不做。 * @author The Apache Directory Project (mina-dev@directory.apache.org) * @version $Rev$, $Date$ */ public class IoHandlerAdapter implements IoHandler { public void sessionCreated(IoSession session) throws Exception { SessionUtil.initialize(session); } public void sessionOpened(IoSession session) throws Exception { } public void sessionClosed(IoSession session) throws Exception { } public void sessionIdle(IoSession session, IdleStatus status) throws Exception { } public void exceptionCaught(IoSession session, Throwable cause) throws Exception { if (SessionLog.isWarnEnabled(session)) { SessionLog.warn(session, "EXCEPTION, please implement " + getClass().getName() + ".exceptionCaught() for proper handling:", cause); } } public void messageReceived(IoSession session, Object message) throws Exception { } public void messageSent(IoSession session, Object message) throws Exception { } }
发表评论
-
Mina 报文连接器(NioDatagramConnector)
2017-06-14 08:46 1339Mina 抽象Polling连接器(A ... -
Mina 报文监听器NioDatagramAcceptor二(发送会话消息等)
2017-06-13 16:01 1488Mina 报文监听器NioDatagramAcceptor一( ... -
Mina 报文监听器NioDatagramAcceptor一(初始化,Io处理器)
2017-06-13 09:51 2502Mina Io监听器接口定义及抽象实现:http://dona ... -
Mina 报文通信简单示例
2017-06-12 09:01 2484MINA TCP简单通信实例:http://donald-dr ... -
Mina socket连接器(NioSocketConnector)
2017-06-12 08:37 4641Mina 抽象Polling连接器(AbstractPolli ... -
Mina 抽象Polling连接器(AbstractPollingIoConnector)
2017-06-11 21:29 960Mina 连接器接口定义及抽象实现(IoConnector ) ... -
Mina 连接器接口定义及抽象实现(IoConnector )
2017-06-11 13:46 1770Mina IoService接口定义及抽象实现:http:// ... -
Mina socket监听器(NioSocketAcceptor)
2017-06-09 08:44 3338Mina IoService接口定义及抽象实现:http:// ... -
Mina 抽象polling监听器
2017-06-08 22:32 708Mina Io监听器接口定义及抽象实现:http://dona ... -
Mina Io监听器接口定义及抽象实现
2017-06-07 13:02 1296Mina IoService接口定义及抽象实现:http:// ... -
Mina IoService接口定义及抽象实现
2017-06-06 23:44 1127Mina IoHandler接口定义:http://donal ... -
Mina Nio会话(Socket,DataGram)
2017-06-06 12:53 1144Mina Socket会话配置:http://donald-d ... -
Mina 抽象Io会话
2017-06-05 22:45 968Mina Io会话接口定义:http://donald-dra ... -
Mina Io会话接口定义
2017-06-04 23:15 1094Mina Nio处理器:http://donald-drape ... -
Mina Nio处理器
2017-06-04 22:19 692Mina Io处理器抽象实现:http://donald-dr ... -
Mina Io处理器抽象实现
2017-06-03 23:52 1082Mina 过滤链抽象实现:http://donald-drap ... -
MINA 多路复用协议编解码器工厂二(多路复用协议解码器)
2017-06-01 12:52 2193MINA 多路复用协议编解码器工厂一(多路复用协议编码器): ... -
MINA 多路复用协议编解码器工厂一(多路复用协议编码器)
2017-05-31 22:22 1790MINA 多路分离解码器实例:http://donald-dr ... -
Mina 累计协议解码器
2017-05-31 00:09 1155MINA 编解码器实例:http://donald-drape ... -
Mina 协议编解码过滤器三(会话write与消息接收过滤)
2017-05-28 07:22 1689Mina 协议编解码过滤器一(协议编解码工厂、协议编码器): ...
相关推荐
NULL 博文链接:https://chinaestone.iteye.com/blog/424576
mina原理[定义].pdf
最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 引言 1 一. Mina入门 2 第一步....第二步....第三步....第四步....3.IoHandler接口 50 三. Mina实例 50 四. 其他 50
mina学习资料 引言 1 一. Mina入门 2 第一步.下载使用的Jar包 2 第二步....第三步....第四步....第五步....二. Mina基础 9 1.IoService接口 10 ...2.IoFilter接口 14 ...3.IoHandler接口 50 三. Mina实例 50 四. 其他 50
基于spring mina 封装 rest 形式接口服务器,摆脱对tomcat,resin等服务器的依赖,基于spring,mina本身可提供tcp/ip接口,同时封装rest可方面提供http形式rest接口访问服务,方便接入
深入理解Apache_Mina_(3)----_与IoHandler相关的几个类 深入理解Apache_Mina_(4)----_IoFilter和IoHandler的区别和联系 深入理解Apache_Mina_(5)----_配置Mina的线程模型 深入理解Apache_Mina_(6)----_Java_Nio_...
此demo利用springmvc整合mina,实现客户端主动发送消息到服务端,并且以http接口的方式实现,亲测可用。
mina连接,mina心跳连接,mina断线重连。其中客户端可直接用在android上。根据各方参考资料,经过自己的理解弄出来的。CSDN的资源分太难得了。
mina-core-2.0.0-M6.jar mina-example-2.0.0-M6.jar mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-...
mina的使用初步入门mina的使用初步入门mina的使用初步入门
里面包含mina2.0的api(英文)和mina自学手册,还有mina的开发指导
mina服务端工程例子包括相关源码,实现了socket 的nio
mina的高级使用,mina文件图片传送,
Apache MINA是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。 当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版...
Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)
mina内部源码,可以深入的研究下,重构修改后获得的效率更加突出
mina网络编程框架,mina网络编程框架是你的网络编程更简单,我使用mina写了一个接口,还可以。如果有不明白的可以给我发邮件3864913429@163.com. qq:270445938
pache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性...
mina.jar 包,内涵mina所需的所有jar包, 解压即可,测试可用。mina.jar 包,内涵mina所需的所有jar包, 解压即可,测试可用。
mina客户端,服务器端的demo