Apache MINA是一個網絡應用程序框架,用來幫助用戶簡單地開發高性能和高可靠性的網絡應用程序。它提供了一個通過Java NIO在不同的傳輸例如TCP/IP和UDP/IP上抽象的事件驅動的異步API。
Apache MINA 也稱為:
● NIO 框架庫
● 客戶端服務器框架庫
● 一個網絡套接字庫
MINA雖然簡單但是仍然提供了全功能的網絡應用程序框架:
● 為不同的傳輸類型提供了統一的API:
○ 通過Java NIO提供TCP/IP 和 UDP/IP支持
○ 通過RXTX提供串口通訊(RS232)
○ In-VM管道通訊
○ 你能實現你自己的API!
● 過濾器作為一個擴展特性; 類似Servlet過濾器
● 低級和高級的API:
○ 低級: 使用字節緩存(ByteBuffers)
○ 高級: 使用用戶定義的消息對象(objects)和編碼(codecs)
● 高度定制化線程模型:
○ 單線程
○ 一個線程池
○ 一個以上的線程池(也就是SEDA)
● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL · TLS · StartTLS支持
● 超載保護和傳輸流量控制
● 利用模擬對象進行單元測試
● JMX管理能力
● 通過StreamIoHandler提供基於流的I/O支持
● 和知名的容器(例如PicoContainer、Spring)集成
● 從Netty平滑的遷移到MINA, Netty是MINA的前輩。
MINA 基本類的描述 :
IoAccepter 相當於網絡應用程序中的服務器端
IoConnector 相當於客戶端
IoSession 當前客戶端到服務器端的一個連接實例
IoHandler 業務處理邏輯
IoFilter 過濾器用於懸接通訊層接口與業務層接口
要編寫和運行一個基於Apache MINA 2.0的程序,需要JDK 5.0以上版本,
下面看一個domo:
准備工作:
mina-core-2.0.0-M6.jar
slf4j-api-1.5.2.jar
在官網下載到mina,找出這幾個jar,添加到項目,
服務端的代碼:
其中new ServerHandler()傳入的是實現了IoHandler接口的類,代碼如下:
重寫了父類中的messageReceived()和exceptionCaught()
一般在messageReceived()中對客戶端的請求進行業務,邏輯處理
下面在命令行用telnet測試一下,
如果是win 7沒有telnet,找到“打開或關閉Windows功能” ,找到telnet客戶端和telnet服務端,勾選即可,
在命令行下輸入telnet 127.0.0.1 5469
然後再telnet窗口中輸入幾個字符回車,在控制台可以看到服務器成功收到了消息: