Mina文档 - 图文

2019-03-04 13:23

Mina使用

1Mina简介:

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。。本文将通过官方网站上的快速入门程序 来介绍 MINA 的基础架构的同时演示如何使用MINA 开发网络应用程序。

2环境准备:

首先到官方网站下载最新的 MINA 版本,地址是:http://mina.apache.org/downloads.html。下载之前先介绍一下 MINA 的两个版本:1.0.x 适合运行环境为 JDK1.4,1.1.x 适合 JDK1.5 的版本,两者的编译环境都需要 JDK1.5。JDK1.5 已经是非常普遍了,本文中使用 1.1.5 版本的 MINA,编译和运行所需的文件是 mina-core-1.1.7.jar。

下载 MINA 的依赖包 slf4j。MINA 使用此项目作为日志信息的输出,而 MINA 本身并不附带此项目包,请到http://www.slf4j.org/download.html 地址下载 slf4j 包,slf4j 项目解压后有很多的文件,本例中只需要其中的 slf4j-api-1.5.2.jar 和 slf4j-simple-1.5.2.jar 这两个 jar 文件。如果没有这两个文件就会导致启动例子程序的时候报 org/slf4j/LoggerFactory 类没找到的错误。 当然要求机器上必须装有 1.5 或者更新版本的 JDK。

最好你应该选择一个顺手的 Java 开发环境例如 Eclipse 或者 NetBeans 之类的,可以更方便的编码和调试。

3MINA 基本类的描述:

IoServiceListener应用监听器应用被激活或销毁会话建立或销毁IoService,包括服务器端IoAcceptor,客户端IoConnector过滤后的数据有数据进入IoFilterChain过滤器链写回的数据过滤后的数据IoHandler业务处理逻辑ConnectFuture,连接请求CloseFuture,会话关闭IoFutureListener,Io操作监听器WriteFuture,写操作

3.1 IoService应用程序入口

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

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

IoService中的方法 void addListener(IoServiceListener listener) Adds an IoServiceListener that listens any events related with this service. 添加监听器用来监听与这个service相关的所有事件。 IoServiceConfig getDefaultConfig() Returns the default configuration which is used when you didn't specify any configuration. 返回这个service的默认配置。 DefaultIoFilterChainBuilder getFilterChain() A shortcut for ( ( DefaultIoFilterChainBuilder ) getFilterChainBuilder() ). 获取DefaultIoFilterChainBuilder的简便方法。 IoFilterChainBuilder getFilterChainBuilder() Returns the global IoFilterChainBuilder which will modify the IoFilterChain of all IoSessions which is managed by this service. 获取一个全局的IoFilterChainBuilder(过滤器链构建器,暂时这么翻译),这个构建器可以修改与当前service相关的所有session的过滤器链。 Set getManagedServiceAddresses() Returns all SocketAddresses this service is managing. 返回当前service所管理的所有的Socket地址 Set getManagedSessions(SocketAddress serviceAddress) Returns all sessions with the specified remote or local address, which are currently managed by this service. 返回当前service管理的指定地址的所有session回话。 boolean isManaged(SocketAddress serviceAddress) Returns true if this service is managing the specified serviceAddress. 给定一个Socket地址,如果当前service正在管理这个地址,则返回真。 void removeListener(IoServiceListener listener) Removed an existing IoServiceListener that listens any events related with this service. 移除指定监听器。 void setFilterChainBuilder(IoFilterChainBuilder builder) Sets the global IoFilterChainBuilder which will modify the IoFilterChain of all IoSessions which is managed by this service. 设置一个全局的IoFilterChainBuilder(过滤器链构建器,暂时这么翻译),这个构建器可以修改与当前service相关的所有session的过滤器链。

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

void bind(SocketAddress address, IoHandler handler) 绑定服务器到指定的地址(address),并指定处理器(handler)来处理接入的链接。 void bind(SocketAddress address, IoHandler handler, IoServiceConfig config) 设置服务器的设置(config),绑定服务器到指定的地址(address),并指定处理器(handler)来处理接入的链接。 IoSession newSession(SocketAddress remoteAddress, SocketAddress localAddress) (可选) 在本地(localAddress)与远程(remoteAddress)处于链接的情况下,获取一个建立在它们之间的新的会话。 void unbind(SocketAddress address) 解除服务器与指定地址的绑定,并断开所有与此服务器链接的客户端。 void unbindAll() 解除所有由当前acceptor绑定的所有地址。 程序见4.1附件。

3.3 IoConnector 相当于客户端

IoConnector中的方法 ConnectFuture connect(SocketAddress address, IoHandler handler) Connects to the specified address. 连接到指定地址的服务器。 ConnectFuture connect(SocketAddress address, IoHandler handler, IoServiceConfig config) Connects to the specified address. 连接到指定地址的服务器。 ConnectFuture connect(SocketAddress address, SocketAddress localAddress, IoHandler handler) Connects to the specified address. 连接到指定地址的服务器。 ConnectFuture connect(SocketAddress address, SocketAddress IoHandler handler, IoServiceConfig config) Connects to the specified address. localAddress, 连接到指定地址的服务器。 示例程序见附件:

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

CloseFuture close() 关闭当前会话。 IoFilterChain getFilterChain() 获取当前会话的过滤器链。 IoHandler getHandler() 获取当前会话的处理器。 SocketAddress getLocalAddress() 获取与当前会话链接的本地地址。 SocketAddress getRemoteAddress() 获取链接到当前会话的远程计算机地址。 WriteFuture write(Object message) 发送指定的message到远程计算机。

3.5 IoHandler 业务处理逻辑

该接口有五个实现类

ChainedIoHandler, DemuxingIoHandler, IoHandlerAdapter,

SingleSessionIoHandlerDelegate, StreamIoHandler。其中ChainedIoHandler, DemuxingIoHandler, StreamIoHandler实现了接口,并继承了IoHandlerAdapter,IoHandlerAdapter实现了接口的所有方法,

但是在方法中并没有做什么,我们可以继承它,根据需要有选择的重写其中的方法。 一个IoHandler接口具有如下一些方法:

void exceptionCaught(IoSession session, Throwable cause) 当接口中其他方法抛出异常未被捕获时触发此方法 void messageReceived(IoSession session, Object message) 当接收到客户端的请求信息后触发此方法. void messageSent(IoSession session, Object message) 当信息已经传送给客户端后触发此方法. void sessionClosed(IoSession session) 当连接被关闭时触发,例如客户端程序意外退出等等. void sessionCreated(IoSession session) 当一个新客户端连接后触发此方法. void sessionIdle(IoSession session, IdleStatus status) 当连接空闲时触发此方法. void sessionOpened(IoSession session) 当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发 StreamIoHandler类提供了基于流的I/O支持,继承这个类并实现processStreamIo(IoSession

session, InputStream in, OutputStream out)方法来执行I/O操作:


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

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

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

马上注册会员

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