看到的應用mina做的乙個例項

2021-09-06 06:32:28 字數 1858 閱讀 1251

現在在做個車務通系統(**),系統需要與遠端的mina伺服器端進行交換,伺服器端由其他公司開發,只為我們提供介面,在我們的車務通系統中需要通過網路程式設計呼叫這些遠端介面,所以車務通系統相當於mina的客戶端(相對於mina伺服器端而言)。 

流程是這樣的   當車務通系統的客戶端,也就是瀏覽器頁面,發出請求,車務通系統中的servlet接收,呼叫mina客戶端的iosession.write()方法  向mina伺服器端(也就是遠端伺服器)傳送請求、呼叫介面後 ,  遠端伺服器會返回響應的處理結果, 

然後在mina客戶端(車務通系統中接收),messagereceive()方法負責接收,在這裡遇到了問題,接收後的資料該如何返回給客戶端(瀏覽器端)。

然後在mina客戶端(車務通系統中接收),messagereceive()方責接收到訊息時將系統全域性唯一標識從iosession中取出,將其和當前資料繫結儲存,如: 

public

static

final mapresults = new concurrenthashmap();

public

void messagereceived(iosession session, object message) throws

exception {

//從session中取到標識

string flag = (string)session.getattribute("sendrequestflag");

//將從服務端接收到的message和標識繫結儲存,可以儲存到記憶體、佇列、檔案、資料庫等等

//在這裡簡單的以標識為key,message為value儲存到map中

results.put(flag, message);

//關閉session

session.close(true

);}

最後通過系統全域性唯一標識獲取結果並返回給客戶端 

//

通過標識獲取儲存的結果

object result =clienthandler.results.get(flag);

//清除標識內容

clienthandler.results.remove(flag);

//將結果返回客戶端

response.getwriter().write(result.tostring());

從上可知,我們可以通過iosession將乙個標識傳到messagereceived方法中,熟悉web開發的知道,iosession在這裡跟httpsession使用方式一樣,因此我們可以將任何東東通過iosession傳到messagereceived方法中,比如httpservletrequest、httpservletresponse、spring bean、hibernate dao、資料庫連線等等。反之,在messagereceived方法中通過iosession將接收後的資料或任何其它東東傳到外面,這時就不能在messagereceived方法中關閉iosession了。 

用servlet簡單寫了乙個例子,以供參考,見附件。採用同步、非同步呼叫均可,任君選擇,在這例子中我採用jquery的ajax非同步呼叫

看到的應用mina做的乙個例項

現在在做個車務通系統 系統需要與遠端的mina伺服器端進行交換,伺服器端由其他公司開發,只為我們提供介面,在我們的車務通系統中需要通過網路程式設計呼叫這些遠端介面,所以車務通系統相當於mina的客戶端 相對於mina伺服器端而言 流程是這樣的 當車務通系統的客戶端,也就是瀏覽器頁面,發出請求,車務通...

看到乙個有趣的東東。

這段時間忙著搬新公司,一直也沒上來寫東西,今天在面試簡歷的看到乙個非常有趣的自我介紹,原文如下 自我評價 本人安于工作,誠實肯幹,勇於挑戰和接受新知識 現大專在讀 相信我的努力定能為你帶來一分意外的收穫。相信他的能力吧 擅長騙取弱小可欺的女孩的身體及錢財,弱女子到手後要求她買膝上型電腦,包括在兩小孩...

Tab控制項的乙個簡單應用例項

1 首先建立乙個mfc對話方塊框架,在對話方塊資源上從工具箱中新增上乙個tab control 控制項,根據需要修改一下屬性,然後右擊控制項,為這個控制項新增乙個變數,將此控制項跟乙個ctabctrl類變數繫結在一起,這裡設為m tabctrl 2 建立兩個新的對話方塊資源,其屬性作如下修改 bor...