IoConnector和IoSession的关系以及上挂Filter的区别
来源:互联网 发布:南京秦淮网络问政 编辑:程序博客网 时间:2024/04/29 13:40
IoConnector是Mina框架下的网络接收端,当它与服务端建立连接后返回一个代表连接的IoSession,具体过程如下:
IoConnector connector = new NioSocketConnector(50);
ConnectFuture connFuture = connector.connect(new InetSocketAddress(ip, port));
boolean b = connFuture.awaitUninterruptibly(10000);
if (b) {
IoSession session = connFuture.getSession();
...
}
也就是用IoConnector的connect方法得到一个ConnectFuture,再用此ConnectFuture的getSession方法得到IoSession。
本质上Filter是与连接(也就是IoSession)相关联的,但由于下面的两个原因,导致需要在Connector上定义filter链。
首先是filter链需要在连接建立前就要定义好,这样才能实现“一建立连接就做某事”这种功能,在已经存在的Session(也就是连接)上挂filter显然无法达到这种效果;
其次是Connector每与服务端建立一个连接就会生成一个Session,且这些Session的行为具有很大的相似性,也就是上面的filter一般也是一样的,这样为多个session定义相同的一组filter显然是一种dirty work;
简而言之,就是Connector上挂filter链属于“配置”定义,而session上挂filter链属于“运行时”定义,当连接关闭(断开)后,这个filter链也就不存在了。
下面是二者挂filter链的具体方法。
对于Connector:
DefaultIoFilterChainBuilder chain = IoConnector.getFilterChain();
chain.addLast(String name, IoFilter filter);
对于session:
IoFilterChain chain = session.getFilterChain();
chain.addLast(String name, IoFilter filter);
- IoConnector和IoSession的关系以及上挂Filter的区别
- .map()和.filter()以及他们的区别
- 进程和线程的关系以及区别
- include-filter和exclude-filter的区别
- include-filter和exclude-filter的区别
- Servlet中filter的执行顺序以及urlPatterns和servletNames之间的关系
- x509和pkcs12以及pkcs7的关系和区别
- x509和pkcs12以及pkcs7的关系和区别
- 数组和指针的比较和关系以及区别
- Filter和Intercepor的区别
- Filter和listener的区别
- Filter和Servlet的区别
- filter和interceptor的区别
- interceptor和filter的区别
- filter()和find()的区别
- find()和filter()的区别
- Filter和Servlet的区别
- servlet和Filter的区别
- java的System.getProperty()方法可以获取的值
- 全局变量和局部变量在内存里的区别
- Ajax 入门例子
- javascript 制作随鼠标滚动的广告图片
- POJ-2828-Buy Tickets
- IoConnector和IoSession的关系以及上挂Filter的区别
- android 手记之 IO流
- 漂亮的网页消息提示框<一>
- VC程序实现根据文件后缀名查询注册表并用查询结果运行打开程序打开对应文件
- SQL-连接的使用
- Android系统手机隐藏代码大全
- PHP网站开发
- java.nio的一个小例子
- C++ 数组类模板