java mina是什么,讓我們一起了解一下?
MINA 是一個網絡應用框架,有助于用戶非常方便地開發高性能、高伸縮性的網絡應用,通過Java NIO提供了一個抽象的、事件驅動的、異步的位于各種傳輸協議之上的API,MINA通??杀环Q之為NIO框架庫。
mina的工作流程是怎樣的?
當遠程客戶機首次訪問采用Mina編寫的程序時,IOAcceptor作為線程運行,負責接收來自客戶的請求。當有客戶請求連接時,創建一個IoSession,該IoSession與IoProcessor,SocketChannel與IoService聯系起來。
IoProcessor作為另一個線程運行,定時檢查客戶是否有數據到來,并對客戶請求進行處理,一次調用IoService中注冊的各個Filter,最后調用IoHandler進行最終的邏輯處理,在將結果過濾后返回給客戶端。
mina線程產生:
1、當?IoAcceptor/IoConnector實例創建的時候,同時一個關聯在IoAcceptor/IoConnector上的IoProcessor線程池也被創建。
2、當IoAcceptor/IoConnector建立套接字(IoAcceptor 的bind()或者是IoConnector 。的connect()方法被調用)時,從線程池中取出一個線程,監聽套接字端口。
3、當 IoAcceptor/IoConnector監聽到套接字上有連接請求時,建立IoSession 。對象,從IoProcessor池中取出一個IoProcessor線程執行IO處理。
4、如若過濾器中配置了“threadPool”過濾器,則使用此線程池建立線程執行業務邏輯(IoHandler)處理,否則使用IoProcessor線程處理業務邏輯。
具體代碼展示:
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; ????} }
以上就是小編今天的分享了,希望可以幫助到大家。