Apache Mina使用手記(四)

2021-04-25 13:44:45 字數 987 閱讀 8182

實際應用當,很多應用系統應用的都不是標準的web service或xml等,比如象中國移動/聯通/電信的簡訊閘道器程式,都有自己不同的協議實現,並且都是基於tcp/ip的位元組流。mina自帶的編解碼器實現了textlineencoder和textlinedecoder,可以進行按行的字串處理,對於象簡訊閘道器程式,就要自己實現編譯碼過濾器了。

我們定義乙個簡單的基於tcp/ip位元組流的協議,實現在客戶端和服務端之間的資料報傳輸。資料報myprotocalpack有訊息頭和訊息體組成,訊息頭包括:length(訊息包的總長度,資料型別int),flag(訊息包標誌位,資料型別byte),訊息體content是乙個字串,實際實現的時候按byte流處理。源**如下:

回過頭來,我們先看一下在minatimeserver中,如何使用乙個文字的編譯碼過濾器,它是在過濾器鏈中新增了乙個叫protocalcodecfilter的類,其中它呼叫 了乙個工廠方法textlinecodecfactory的工廠類,建立具休的textlineencoder和textlinedecoder編碼和解 碼器。我們看一下具體的源**:

textlinefactory實現了protocalcodecfactory介面,該介面主要有乙個編碼的方法getencoder()和乙個解碼的方法getdecoder():

我們主要是仿照textlineencoder實現其中的encode()方法,仿照textlinedecoder實現其中的decode()即可,它們分別實現了protocalencoder和protocaldecoder介面。我們要編寫三個類分別是:myprotocalcodecfactory,myprotocalencoder,myprotocaldecoder對應textlinecodecfactory,textlineencoder,textlinedecoder。

在myprotocalserver中,新增自己實現的log4jfilter和編譯碼過濾器:

編寫乙個客戶端程式進行測試:

也可以用ioconnector實現自己的客戶端:

Apache Mina使用手記(二)

mina主要是作為伺服器端底層框架來實現資料處理,它的實現很簡單,如下例所示 在上面的 中,我用了mina預設的slf4j日誌處理器。因為slf4j本身沒有真正的日誌處理功能,它最終呼叫的是log4j,所以我們可以編寫一下log4j的配置檔案來指定具體的輸出方式。需要注意的一點是配置檔案必須放在sr...

linux使用手記

本文會根據筆者實踐不斷更新 一.安裝星際譯王 stardict 星際譯王是用gtk2開發的跨平台的國際化的詞典軟體。它具有 萬用字元匹配 選中區取詞 模糊查詢 等強大功能。所以他不僅僅是漢英和英漢詞典 目前星際譯王的詞庫很多 但國人大多還是用英漢和漢英比較多 官方主站 http stardict.s...

virtualbox使用手記

系統 ubuntu 8.10 機器上的windows崩潰了,就裝了個virtualbox,虛擬安裝了個virtualbox 先是用的apt源上的virtualbox ose,後來發現這個版本沒辦法支援usb裝置 於是換成了官方提供的新版本 http www.virtualbox.org wiki l...