Mina文档Word格式.docx

上传人:b****3 文档编号:6237020 上传时间:2023-05-06 格式:DOCX 页数:31 大小:151.54KB
下载 相关 举报
Mina文档Word格式.docx_第1页
第1页 / 共31页
Mina文档Word格式.docx_第2页
第2页 / 共31页
Mina文档Word格式.docx_第3页
第3页 / 共31页
Mina文档Word格式.docx_第4页
第4页 / 共31页
Mina文档Word格式.docx_第5页
第5页 / 共31页
Mina文档Word格式.docx_第6页
第6页 / 共31页
Mina文档Word格式.docx_第7页
第7页 / 共31页
Mina文档Word格式.docx_第8页
第8页 / 共31页
Mina文档Word格式.docx_第9页
第9页 / 共31页
Mina文档Word格式.docx_第10页
第10页 / 共31页
Mina文档Word格式.docx_第11页
第11页 / 共31页
Mina文档Word格式.docx_第12页
第12页 / 共31页
Mina文档Word格式.docx_第13页
第13页 / 共31页
Mina文档Word格式.docx_第14页
第14页 / 共31页
Mina文档Word格式.docx_第15页
第15页 / 共31页
Mina文档Word格式.docx_第16页
第16页 / 共31页
Mina文档Word格式.docx_第17页
第17页 / 共31页
Mina文档Word格式.docx_第18页
第18页 / 共31页
Mina文档Word格式.docx_第19页
第19页 / 共31页
Mina文档Word格式.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Mina文档Word格式.docx

《Mina文档Word格式.docx》由会员分享,可在线阅读,更多相关《Mina文档Word格式.docx(31页珍藏版)》请在冰点文库上搜索。

Mina文档Word格式.docx

IoService负责底层通讯接入,IoAcceptor(服务器端)和IoConnector(客户端)是IoService的扩展接口。

备注:

IoAcceptor()可以同时启动多个端口,每个端口可以指定不同的handler和filter,但是一个服务端只有一个监听器。

IoService中的方法

void

addListener(IoServiceListenerlistener)

AddsanIoServiceListenerthatlistensanyeventsrelatedwiththisservice.

添加监听器用来监听与这个service相关的所有事件。

IoServiceConfig

getDefaultConfig()

Returnsthedefaultconfigurationwhichisusedwhenyoudidn'

tspecifyanyconfiguration.

返回这个service的默认配置。

DefaultIoFilterChainBuilder

getFilterChain()

Ashortcutfor((DefaultIoFilterChainBuilder)getFilterChainBuilder()).

获取DefaultIoFilterChainBuilder的简便方法。

IoFilterChainBuilder

getFilterChainBuilder()

ReturnstheglobalIoFilterChainBuilderwhichwillmodifytheIoFilterChainofallIoSessionswhichismanagedbythisservice.

获取一个全局的IoFilterChainBuilder(过滤器链构建器,暂时这么翻译),这个构建器可以修改与当前service相关的所有session的过滤器链。

Set<

SocketAddress>

getManagedServiceAddresses()

ReturnsallSocketAddressesthisserviceismanaging.

返回当前service所管理的所有的Socket地址

IoSession>

getManagedSessions(SocketAddressserviceAddress)

Returnsallsessionswiththespecifiedremoteorlocaladdress,whicharecurrentlymanagedbythisservice.

返回当前service管理的指定地址的所有session回话。

boolean

isManaged(SocketAddressserviceAddress)

ReturnstrueifthisserviceismanagingthespecifiedserviceAddress.

给定一个Socket地址,如果当前service正在管理这个地址,则返回真。

removeListener(IoServiceListenerlistener)

RemovedanexistingIoServiceListenerthatlistensanyeventsrelatedwiththisservice.

移除指定监听器。

setFilterChainBuilder(IoFilterChainBuilderbuilder)

SetstheglobalIoFilterChainBuilderwhichwillmodifytheIoFilterChainofallIoSessionswhichismanagedbythisservice.

设置一个全局的IoFilterChainBuilder(过滤器链构建器,暂时这么翻译),这个构建器可以修改与当前service相关的所有session的过滤器链。

3.2IoAcceptor相当于网络应用程序中的服务器端

bind(SocketAddressaddress,IoHandlerhandler)

绑定服务器到指定的地址(address),并指定处理器(handler)来处理接入的链接。

bind(SocketAddressaddress,IoHandlerhandler,IoServiceConfigconfig)

设置服务器的设置(config),绑定服务器到指定的地址(address),并指定处理器(handler)来处理接入的链接。

IoSession

newSession(SocketAddressremoteAddress,SocketAddresslocalAddress)

(可选)在本地(localAddress)与远程(remoteAddress)处于链接的情况下,获取一个建立在它们之间的新的会话。

unbind(SocketAddressaddress)

解除服务器与指定地址的绑定,并断开所有与此服务器链接的客户端。

unbindAll()

解除所有由当前acceptor绑定的所有地址。

程序见4.1附件。

3.3IoConnector相当于客户端

IoConnector中的方法

ConnectFuture

connect(SocketAddressaddress,IoHandlerhandler)

Connectstothespecifiedaddress.

连接到指定地址的服务器。

connect(SocketAddressaddress,IoHandlerhandler,IoServiceConfigconfig)

connect(SocketAddressaddress,SocketAddresslocalAddress,IoHandlerhandler)

connect(SocketAddressaddress,SocketAddresslocalAddress,IoHandlerhandler,IoServiceConfigconfig)

示例程序见附件:

3.4IoSession当前客户端到服务器端的一个连接实例

CloseFuture

close()

关闭当前会话。

IoFilterChain

获取当前会话的过滤器链。

IoHandler

getHandler()

获取当前会话的处理器。

SocketAddress

getLocalAddress()

获取与当前会话链接的本地地址。

getRemoteAddress()

获取链接到当前会话的远程计算机地址。

WriteFuture

write(Objectmessage)

发送指定的message到远程计算机。

3.5IoHandler业务处理逻辑

该接口有五个实现类ChainedIoHandler,DemuxingIoHandler,IoHandlerAdapter,SingleSessionIoHandlerDelegate,StreamIoHandler。

其中ChainedIoHandler,DemuxingIoHandler,StreamIoHandler实现了接口,并继承了IoHandlerAdapter,IoHandlerAdapter实现了接口的所有方法,但是在方法中并没有做什么,我们可以继承它,根据需要有选择的重写其中的方法。

一个IoHandler接口具有如下一些方法:

exceptionCaught(IoSessionsession,Throwablecause)

当接口中其他方法抛出异常未被捕获时触发此方法

messageReceived(IoSessionsession,Objectmessage)

当接收到客户端的请求信息后触发此方法.

messageSent(IoSessionsession,Objectmessage)

当信息已经传送给客户端后触发此方法.

sessionClosed(IoSessionsession)

当连接被关闭时触发,例如客户端程序意外退出等等.

sessionCreated(IoSessionsession)

当一个新客户端连接后触发此方法.

sessionIdle(IoSessionsession,IdleStatusstatus)

当连接空闲时触发此方法.

sessionOpened(IoSessionsession)

当连接后打开时触发此方法,一般此方法与sessionCreated会被同时触发

StreamIoHandler类提供了基于流的I/O支持,继承这个类并实现processStreamIo(IoSessionsession,InputStreamin,OutputStreamout)方法来执行I/O操作:

protectedabstractvoid

processStreamIo(IoSessionsession,InputStreamin,OutputStreamout)

实现这个方法来执行你的流I/O操作。

DemuxingIoHandler将接收事件分离到指定的MessageHandler中。

<

E>

MessageHandler<

?

superE>

addMessageHandler(Class<

 

type,MessageHandler<

handler)

注册一个MessageHandler用来接收指定类型的message

getMessageHandler(Class<

type)

获取一个已注册的用来处理指定类型的MessageHandler

Map<

Class,MessageHandler>

getMessageHandlerMap()

返回在此handler中注册的所有MessageHandler的Map,以键值对的形式(Type-MessageHandler)。

messageReceived(IoSessionsession,Objectmessage)

将接收事件引入到一个指定的MessageHandler中。

removeMessageHandler(Class<

type)

注销一个指定类型的MessageHandler。

ChainedIoHandler

构造方法

ChainedIoHandler()

CreatesanewinstancewhichcontainsanemptyIoHandlerChain.

创建一个含有空的IoHandlerChain的实例。

ChainedIoHandler(IoHandlerChainchain)

CreatesanewinstancewhichexecutesthespecifiedIoHandlerChainonamessageReceivedevent.

创建一个含有指定IoHandlerChain的实例。

MethodSummary

IoHandlerChain

getChain()

ReturnstheIoHandlerCommandthishandlerwillusetohandlemessageReceivedevents.

返回一个用来处理messageReceived事件的IoHandlerChain

HandlesthespecifiedmessageReceivedeventwiththeIoHandlerCommandorIoHandlerChainyouspecifiedintheconstructor.

通过在构造方法中定义的IoHandlerChain或IoHandlerCommand来处理指定的messageReceived事件。

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

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()销毁该过滤器。

嵌套类

staticinterface

IoFilter.NextFilter

RepresentsthenextIoFilterinIoFilterChain.

过滤器链中的下个过滤器。

Staticclass

IoFilter.WriteRequest

RepresentswriterequestfiredbyIoSession.write(Object).

由IoSession.write(Object)发出的写请求。

方法

destroy()

销毁此过滤器。

由ReferenceCountingIoFilter调用

exceptionCaught(IoFilter.NextFilternextFilter,IoSessionsession,Throwablecause)

过滤IoHandler中的exceptionCaught事件。

filterClose(IoFilter.NextFilternextFilter,IoSessionsession)

过滤IoSession.close()方法。

filterWrite(IoFilter.NextFilternextFilter,IoSessionsession,IoFilter.WriteRequest

过滤IoSession.write(Object)方法。

init()

当过滤器被添加到过滤器链中后调用该方法,这样可以在第一时间为其分配资源。

messageReceived(IoFilter.NextFilternextFilter,IoSessionsession,Objectmessage)

过滤Iohandler中的messageReceived事件。

messageSent(IoFilter.NextFilternextFilter,IoSessionsession,Objectmessage)

过滤Iohandler中的messageSent事件。

onPostAdd(IoFilterChainparent,Stringname,IoFilter.NextFilternextFilter)

在这个过滤器被添加到过滤器链之后调用此方法。

onPostRemove(IoFilterChainparent,Stringname,IoFilter.NextFilternextFilter)

在这个过滤器从过滤器链中被删除之后调用此方法。

onPreAdd(IoFilterChainparent,Stringname,IoFilter.NextFilternextFilter)

在这个过滤器被添加到过滤器链之前调用此方法。

onPreRemove(IoFilterChainparent,Stringname,IoFilter.NextFilternextFilter)

在这个过滤器从过滤器链中被删除之前调用此方法。

sessionClosed(IoFilter.NextFilternextFilter,IoSessionsession)

过滤IoHandler中的sessionClosed事件。

sessionCreated(IoFilter.NextFilternextFilter,IoSessionsession)

过滤IoHandler中的sessionCreated事件。

sessionIdle(IoFilter.NextFilternextFilter,IoSessionsession,IdleStatusstatus)

过滤IoHandler中的sessionIdle事件。

sessionOpened(IoFilter.NextFilternextFilter,IoSessionsession)

过滤IoHandler中的sessionOpened事件。

MINA自身带有一些常用的过滤器,例如codec(字符编号)、LoggingFilter(日志记录)、BlackListFilter(黑名单过滤)、CompressionFilter(压缩)、SSLFilter(SSL加密)等

IoFilterAdapter(过滤器适配器),这个类只实现了IoFilter接口中的方法,但是方法中并没有做任何事。

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

block(InetAddressaddress)

将指定地址的计算机添加黑名单中。

block(InetAddressaddress,Stringerror_string)

setBlacklist(Collection<

InetAddress>

addresses)

将多个指定地址添加到黑名单中。

setBlacklist(InetAddressaddresses)

unblock(InetAddressaddress)

将指定地址的计算机添加黑名单中

程序见附件:

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

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

ProtocolCodecFilter(Class<

extendsProtocolEnc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2