Mina文档 - 图文(2)

2019-03-04 13:23

protected processStreamIo(IoSession session, InputStream in, OutputStream out) abstract 实现这个方法来执行你的流I/O操作。 void DemuxingIoHandler将接收事件分离到指定的MessageHandler中。

MessageHandler addMessageHandler(Class type, MessageHandler handler) 注册一个MessageHandler用来接收指定类型的message MessageHandler getMessageHandler(Class type) 获取一个已注册的用来处理指定类型的MessageHandler Map getMessageHandlerMap() 返回在此handler中注册的所有MessageHandler的Map,以键值对的形式(Type-MessageHandler)。 void messageReceived(IoSessionsession,Object message) 将接收事件引入到一个指定的MessageHandler中。 MessageHandler removeMessageHandler(Class type) 注销一个指定类型的MessageHandler。 ChainedIoHandler

构造方法 ChainedIoHandler() Creates a new instance which contains an empty IoHandlerChain. 创建一个含有空的IoHandlerChain的实例。 ChainedIoHandler(IoHandlerChain chain) Creates a new instance which executes the specified IoHandlerChain on a messageReceived event. 创建一个含有指定IoHandlerChain的实例。

Method Summary IoHandlerChain getChain() Returns the IoHandlerCommand this handler will use to handle messageReceived events. 返回一个用来处理messageReceived事件的IoHandlerChain void messageReceived(IoSession session, Object message) messageReceived event with the IoHandlerCommand or IoHandlerChain you specified in the constructor. Handles the specified 通过在构造方法中定义的IoHandlerChain或IoHandlerCommand来处理指定的messageReceived事件。

3.6 IoFilter 过滤器用于悬接通讯层接口与业务层接口。

IoFilter是MINA核心构造之一,扮演非常重要的角色。它过滤所有的I/O事件和请求,这些事件和请求由IoService最终到达IoHandler。

过滤器的生命周期:一个过滤器只有当它处于过滤器链中时才会起过滤作用。 当添加一个过滤器到过滤器链时: a.

ReferenceCountingIoFilter在第一时间调用init()方法。

b. 调用onPreAdd方法来告知程序,一个过滤器将被添加到过滤器链中。 c.

当过滤器被添加到过滤器链后,所有的事件和I/O请求都会通过过滤器到达IoHandler。

d. 调用onPostAdd方法来告知程序,一个过滤器已被添加到过滤器链中。 e.

当onPostAdd方法 抛出异常时,过滤器将会从过滤器链中被删除,如果这个过滤器是整个过滤器链中的最后一个,那么ReferenceCountingIoFilter将会调用destory()销毁该过滤器。 当从过滤器链中移除过滤器时: a.

调用onPreRemove方法来告知程序,一个过滤器将会从过滤器链中被移除。

b. 过滤器从过滤器链中被移除后后,所有的事件和I/O请求都不会通过该过滤器

到达IoHandler。 c.

调用onPostRemove方法来告知程序,一个过滤器已经从过滤器链中被移除。

d. 当这个过滤器是过滤器链中的最后一个过滤器时,那么

ReferenceCountingIoFilter将会调用destory()销毁该过滤器。

嵌套类 static interface IoFilter.NextFilter Represents the next IoFilter in IoFilterChain. 过滤器链中的下个过滤器。 Static class IoFilter.WriteRequest Represents write request fired by IoSession.write(Object). 由IoSession.write(Object)发出的写请求。 方法 void destroy() 销毁此过滤器。由ReferenceCountingIoFilter调用 void exceptionCaught(IoFilter.NextFilter nextFilter, IoSession session, Throwable cause) 过滤IoHandler中的exceptionCaught事件。 void filterClose(IoFilter.NextFilter nextFilter, IoSession session) 过滤IoSession.close()方法。 void filterWrite(IoFilter.NextFilter nextFilter, IoSession session, IoFilter.WriteRequest

过滤IoSession.write(Object)方法。 void init() 当过滤器被添加到过滤器链中后调用该方法,这样可以在第一时间为其分配资源。由ReferenceCountingIoFilter调用 void messageReceived(IoFilter.NextFilter nextFilter, IoSession session, Object message) 过滤Iohandler中的messageReceived事件。 void messageSent(IoFilter.NextFilter nextFilter, IoSession session, Object message) 过滤Iohandler中的messageSent事件。 void onPostAdd(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter) 在这个过滤器被添加到过滤器链之后调用此方法。 void onPostRemove(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter)

在这个过滤器从过滤器链中被删除之后调用此方法。 void onPreAdd(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter) 在这个过滤器被添加到过滤器链之前调用此方法。 void onPreRemove(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter)

在这个过滤器从过滤器链中被删除之前调用此方法。 void sessionClosed(IoFilter.NextFilter nextFilter, IoSession session) 过滤IoHandler中的sessionClosed事件。 void sessionCreated(IoFilter.NextFilter nextFilter, IoSession session) 过滤IoHandler中的sessionCreated事件。 void sessionIdle(IoFilter.NextFilter nextFilter, IoSession session, IdleStatus status) 过滤IoHandler中的sessionIdle事件。 void sessionOpened(IoFilter.NextFilter nextFilter, IoSession session) 过滤IoHandler中的sessionOpened事件。 MINA自身带有一些常用的过滤器,例如codec(字符编号)、LoggingFilter(日志记录)、 BlackListFilter(黑名单过滤)、CompressionFilter(压缩)、SSLFilter(SSL加密)等 IoFilterAdapter(过滤器适配器),这个类只实现了IoFilter接口中的方法,但是方法中并没有做任何事。

BlackListFilter(黑名单过滤器)是IoFileter的一个实现类,作用是将远程客户端添加到黑名单中后,该客户端就会访问不到服务器。

Method Summary void block(InetAddress address) 将指定地址的计算机添加黑名单中。 void block(InetAddress address, String error_string) 将指定地址的计算机添加黑名单中。 void setBlacklist(Collection addresses) 将多个指定地址添加到黑名单中。 void setBlacklist(InetAddress addresses) 将多个指定地址添加到黑名单中。 void unblock(InetAddress address) 将指定地址的计算机添加黑名单中 程序见附件:

LoggingFilter(日志过滤器),将此过滤器加到过滤器链中后就可以实现MINA的日志功

能。程序见附件:

ProtocolCodecFilter(协议编解码过滤器),通过ProtocolCodecFactory,ProtocolEncoder,或ProtocolDecoder该过滤器可以实现普通的二进制或特殊的协议数据与POJO之间的

相互转换。程序见附件:

构造方法 ProtocolCodecFilter(Class encoderClass, Class decoderClass) ProtocolCodecFilter(ProtocolCodecFactory factory) ProtocolCodecFilter(ProtocolEncoder encoder, ProtocolDecoder decoder) 协议编码器(ProtocolEncoder)将高级的信息对象编码成二进制或特殊的协议数据。MINA会对位于IoSession写队列中的所有消息调用en code函数,然后编码器会将经过编码处理过的消息放到ByteBuffer中,通过ProtocolEncoderOutput函数送出,到达过滤器链中的下个过滤器。

ProtocolEncoder中的方法 void dispose(IoSession session) 释放所有与这个编码器相关的资源。 void encode(IoSession session, ProtocolEncoderOutput out) Object message, 将高级的消息对象编码成二进制或特殊的协议数据 ProtocolEncoder的实现类 NettyEncoder 该编码器可以将Netty2信息编码成字节buffers ObjectSerializationEncoder 该编码器通过ByteBuffer.putObject(Object)可以编码普通的java类 新增方法 int getMaxObjectSize() Returns the allowed maximum size of the encoded object. 返回允许被编码的Object的最大限制 void setMaxObjectSize(int axObjectSize) Sets the allowed maximum size of the encoded object. 设置允许被编码的Object的最大限制 ProtocolEncoderAdapter ProtoclEncoder适配器。 SynchronizedProtocolEncoder, 线程方面的。 TextLineEncoder 该编码器可以将字符串按分隔符编码成一行一行的文本。 构造方法 TextLineEncoder()


Mina文档 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:C语言期末笔试2009年1月A

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: