java mina是什么,讓我們一起了解一下?
MINA 是一個網(wǎng)絡(luò)應(yīng)用框架,有助于用戶非常方便地開發(fā)高性能、高伸縮性的網(wǎng)絡(luò)應(yīng)用,通過Java NIO提供了一個抽象的、事件驅(qū)動的、異步的位于各種傳輸協(xié)議之上的API,MINA通常可被稱之為NIO框架庫。
mina的工作流程是怎樣的?
當(dāng)遠(yuǎn)程客戶機首次訪問采用Mina編寫的程序時,IOAcceptor作為線程運行,負(fù)責(zé)接收來自客戶的請求。當(dāng)有客戶請求連接時,創(chuàng)建一個IoSession,該IoSession與IoProcessor,SocketChannel與IoService聯(lián)系起來。
IoProcessor作為另一個線程運行,定時檢查客戶是否有數(shù)據(jù)到來,并對客戶請求進行處理,一次調(diào)用IoService中注冊的各個Filter,最后調(diào)用IoHandler進行最終的邏輯處理,在將結(jié)果過濾后返回給客戶端。
mina線程產(chǎn)生:
1、當(dāng)?IoAcceptor/IoConnector實例創(chuàng)建的時候,同時一個關(guān)聯(lián)在IoAcceptor/IoConnector上的IoProcessor線程池也被創(chuàng)建。
2、當(dāng)IoAcceptor/IoConnector建立套接字(IoAcceptor 的bind()或者是IoConnector 。的connect()方法被調(diào)用)時,從線程池中取出一個線程,監(jiān)聽套接字端口。
3、當(dāng) IoAcceptor/IoConnector監(jiān)聽到套接字上有連接請求時,建立IoSession 。對象,從IoProcessor池中取出一個IoProcessor線程執(zhí)行IO處理。
4、如若過濾器中配置了“threadPool”過濾器,則使用此線程池建立線程執(zhí)行業(yè)務(wù)邏輯(IoHandler)處理,否則使用IoProcessor線程處理業(yè)務(wù)邏輯。
具體代碼展示:
public?class?SocketCodecFactory?implements?ProtocolCodecFactory?{ ????private?final?SocketDecode?decoder; ????private?final?SocketEncode?encoder; ????public?SocketCodecFactory()?{ ????????decoder?=?new?SocketDecode(); ????????encoder?=?new?SocketEncode(); ????} ????@Override ????public?ProtocolDecoder?getDecoder(IoSession?session)?throws?Exception?{ ????????return?decoder; ????} ????@Override ????public?ProtocolEncoder?getEncoder(IoSession?session)?throws?Exception?{ ????????return?encoder; ????} }
以上就是小編今天的分享了,希望可以幫助到大家。