Mina APR传输与串口传输讲解

Posted boonya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mina APR传输与串口传输讲解相关的知识,希望对你有一定的参考价值。

原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport)

1.1.1. APR传输

1.1.1.1. 介绍

APR (Apache Portable Runtime) Apache便携式运行时库提供越的可扩展性、性能和能够更好与本地服务器技术集成。Mina支持APR传输。在这部分,我没们将在Mina的基础之上使用APR传输。我们将使用Time Server的例子。

1.1.1.2. 先决条件

APR传输依赖以下组件:

将本地包加入到PATH路径下。

1.1.1.3. 使用APR传输

参考Time Server完整示例程序。让我们来看出基于NIO的Time Server实现是什么的:

IoAcceptor acceptor = new NiosocketAcceptor();

acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));

acceptor.setHandler(  new TimeServerHandler() );

acceptor.getSessionConfig().setReadBufferSize( 2048 );acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );

acceptor.bind( new InetSocketAddress(PORT) );

让我们来看怎么使用APR传输:

IoAcceptor acceptor = new AprSocketAcceptor();

acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));

acceptor.setHandler(  new TimeServerHandler() );

acceptor.getSessionConfig().setReadBufferSize( 2048 );acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );

acceptor.bind( new InetSocketAddress(PORT) );

 我们只是NioSocketAcceptor变为AprSocketAcceptor就是这样,现在我们的Time Server使用APR传输。

 其他完整的流程仍然是相同的。

1.1.2. Serial传输

通过Mina2.0你可以连接到串行端口通过使用连接到Mina的TCP / IP端口。

1.1.2.1. 了解Mina2.0

你可以下载最新的构建版本(目前最新的是2.0.13)。如果你喜欢从仓库构建代码,如需要帮助请查阅开发者指南。

1.1.2.2. 先决条件

有用的信息:

访问串行端口之前Java程序需要一个本地程序根据你的操作系统使用.DLL或.so文件)。Mina使用来自于ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zipRXTX.org包。

只需要将你完好的.DLL或.so文件放入你的JDK/JRE里面的jre/lib/i386/路径,或使用-Djava.library.path=定义你的本地程序包路径。

有用的信息:

mina-transport-serial.jar不包括在完整的分发包你可以从这里下载。

1.1.2.3.  连接一个串行端口

串行通信Mina只提供一个IoConnector由于其本身是点对点通信媒体。在这个时候你应该已经读了Mina教程。现在连接到串行端口需要SerialConnector:

// create your connector

IoConnector connector = new SerialConnector()connector.setHandler( ... here your buisness logic IoHandler ... );

没有什么与SocketConnector截然不同让我们创建一个地址连接到串行端口

SerialAddress portAddress=new SerialAddress( "/dev/ttyS0", 38400, 8, StopBits.BITS_1, Parity.NONE, FlowControl.NONE );

第一个参数是你的端口标识。Windows电脑的串口被称为“COM1”、“COM2”等……Linux和其他一些Unix被称为:“/ dev / ttyS0”、“/ dev / ttyS1”、“/ dev / ttyUSB0”。

其余的参数是根据设备的驱动和所谓的通信特点。

  • · the baud rate
  • · the data bits
  • · the parity
  • · the flow control mecanism

一旦完成,将连接器连接到地址:

ConnectFuture future = connector.connect( portAddress );

future.await();

IoSession sessin = future.getSession();

看吧!其他的都是像往常一样,你可以插入过滤器和编解码器。为了学习更多关于RS232的请参看:http://en.wikipedia.org/wiki/RS232

 


以上是关于Mina APR传输与串口传输讲解的主要内容,如果未能解决你的问题,请参考以下文章

tomcat的APR是啥?

将md5格式的现有密码传输到apache .htpasswd

Mina2 与 Mina1变化

Mina框架研究

MINA快速传输文件

Linux下配置tomcat + apr + native应对高并发