Apache mina2 用户指南(六)传输

来源:互联网 发布:f22在福建被击落知乎 编辑:程序博客网 时间:2024/06/03 10:09
APR 传输
        简介
        APR (Apache Portable Runtime,Apache 可移植运行) 提供了更好的扩展性、性能以及更好的与本地服务器技术的集成。MINA 照常 APR 传输。现在我们将了解如何使用 MINA 进行 APR 传输。我们将为此使用时间服务器的例子。
        先决条件
        APR 传输取决于以下组件
        APR 库 - 从 http://www.apache.org/dist/tomcat/tomcat-connectors/native/ 为你的平台下载并安装适当的库
        JNI 包装 (tomcat-apr-5.5.23.jar) 这个 jar 附带于在发布版中
        把本地库放在环境变量中

        使用 APR 传输
        访问 时间服务器 例子以获取完整源代码
        现在看一下基于 NIO 的时间服务器应用:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. IoAcceptor acceptor = new NioSocketAcceptor();  
  2.   
  3. acceptor.getFilterChain().addLast( "logger"new LoggingFilter() );  
  4. acceptor.getFilterChain().addLast( "codec"new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));  
  5.   
  6. acceptor.setHandler(  new TimeServerHandler() );  
  7.   
  8. acceptor.getSessionConfig().setReadBufferSize( 2048 );  
  9. acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );  
  10.   
  11. acceptor.bind( new InetSocketAddress(PORT) );  

        然后看一下如何使用 APR 传输:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. IoAcceptor acceptor = new AprSocketAcceptor();  
  2.   
  3. acceptor.getFilterChain().addLast( "logger"new LoggingFilter() );  
  4. acceptor.getFilterChain().addLast( "codec"new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));  
  5.   
  6. acceptor.setHandler(  new TimeServerHandler() );  
  7.   
  8. acceptor.getSessionConfig().setReadBufferSize( 2048 );  
  9. acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );  
  10.   
  11. acceptor.bind( new InetSocketAddress(PORT) );  

        只需要 NioSocketAcceptor 改为 AprSocketAcceptor。就这些,现在我们的时间服务器可以使用 APR 传输了。
        其他完成过程保持不变。


        串行传输
        使用 MINA 2.0 你可以连接到串行端口,就行你使用 MINA 连接到一个 TCP/IP 端口一样。
        获取 MINA 2.0
        你可以下载最新构建的版本 (2.0.2)。
        如果你更喜欢从 trunk 下构建代码,并且需要为此获得帮助,请咨询开发者指南。
        先决条件
        有用信息
        在使用 Java 程序访问串行端口之前你需要一个本地库 (因你的操作系统不同可能是 .DLL 或者 .so)。MINA 使用的是来自 RXTX.org 的:ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip。
        只需要把合适的 .dll 或者 .so 放在你的 JDK/JRE 的 jre/lib/i386/ 目录下,或者使用 -Djava.library.path= argument 来制定你所放置的本地库。

        有用信息
        mina-transport-serial
 的 jar 不包括在完整发布版本里头。你可以从这里下载到它。

        连接到串行端口
        MINA 所提供的串行通信只有一个 IoConnector,根据点对点通信媒体的性质。
        这里假定你已经读过了 MINA 指南。
        你需要一个 SerialConnector 以连接到一个串行端口:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. // create your connector  
  2. IoConnector connector = new SerialConnector()  
  3. connector.setHandler( ... here your buisness logic IoHandler ... );  

        除了 SocketConnector 之外没啥不同的。
        现在为连接到我们的串行端口创建一个地址:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. SerialAddress portAddress=new SerialAddress( "/dev/ttyS0"384008, StopBits.BITS_1, Parity.NONE, FlowControl.NONE );  

        第一个参数是你的端口标识。对于 Windows 系统的电脑,串行端口被叫做 "COM1"、"COM2" 等等...对于 Linux 和其他 Unix 系统:"/dev/ttyS0"、"/dev/ttyS1"、"/dev/ttyUSB0"。
        其他参数取决于你的设备和通信特性。
  • 波特率
  • 数据位
  • 奇偶性
  • 流控制机制
        这个完成之后,将连接器连接到相应地址:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. ConnectFuture future = connector.connect( portAddress );  
  2. future.await();  
  3. IoSession sessin = future.getSession();  

        就这些!其他照常,你可以插进你的过滤器和编解码器。更多信息请参考 RS232:http://en.wikipedia.org/wiki/RS232
原文链接:http://mina.apache.org/mina-project/userguide/ch6-transports/ch6-transports.html
0 0
原创粉丝点击