新四季網

Java應用的處理方法、系統和SAF平臺的製作方法

2023-07-30 09:10:51

專利名稱:Java應用的處理方法、系統和SAF平臺的製作方法
技術領域:
本發明涉及通信技術領域,特別涉及一種Java應用的處理方法、系統和SAF平臺。
背景技術:
信息技術anformation Technology,以下簡稱IT)通常是指結合通用計算 機硬體及軟體技術來採集、存儲、加工與處理信息的技術,其優勢在數位技術;通信技術 (Communication Technology,以下簡稱CT)通常是指結合專用硬體及軟體技術組網以傳 送信息的技術,其優勢在網絡技術。隨著IT和CT的發展,IT和CT這兩種技術正在消除差 異、相互融合。信息和通信技術information and Communication ^Technology,以下簡稱 ICT)反映的正是IT和CT互相融合的技術趨勢。目前,ICT的概念已經得到了普遍認可, ICT得到普遍認可的一個明顯例證是作為IT領域關鍵技術的Java語言開始逐漸在CT領 域中應用起來。但是由於Java語言根植的IT領域在高可用性(High Availability,以下 簡稱HA)和操作維護(Operating & Maintenance,以下簡稱0M)能力上的先天不足,導致 Java應用難以滿足CT領域的高可靠性等電信級要求。為了提高Java應用的HA和OM能 力,業界公認的思路是讓lava應用集成CT領域已有的C/C++電信基礎平臺,充分利用C/ C++電信基礎平臺積累的HA和OM能力。業務可用性論壇(Service Availability Forum, 以下簡稱SAF)制定了一系列的包括HA和OM在內的平臺規範。SAF制定的各種平臺規範 在很大程度上指示著電信基礎平臺的發展方向,因此JAVA應用與C/C++電信基礎平臺的集 成,從某種意義上講就是Java應用與基於SAF規範的C/C++電信基礎平臺的集成。其中, 基於SAF規範的C/C++電信基礎平臺可簡稱為SAF平臺,提供SAF規範的接口的平臺代理 稱為 SAF 代理(SAF Agent)。現有技術中,Java應用與SAF平臺集成的方法為將SAF Agent以C/C++語言開發 為動態連結庫,再通過Java本地接口(Java Native hterface,以下簡稱JNI)機制實現 SAF Agent與Java應用之間的集成。其中,JNI機制是指一種由Java虛擬機(Java Virtual Machine,以下簡稱JVM)提供的允許Java應用程式與C/C++應用程式在同一進程內以應 用編程接口(Application Programming hterface,以下簡稱API)調用形式相互訪問的 方法,該JNI是基於C/C++語言和Java語言的。在實現本發明的過程中,發明人發現現有技術中至少存在如下問題現有技術中,SAF代理是以C/C++語言開發成動態連結庫,JNI是基於C/C++語言 和Java語言的,Java應用與SAF平臺之間是基於JNI機制實現集成的。JNI機制在調用時 會觸發作業系統的調用,Java應用的性能不高,JNI引入的C/C++編寫本地代碼,容易出現 內存洩露,Java應用的可靠性不高。

發明內容
本發明實施例提供一種Java應用的處理方法、系統和SAF平臺,用以提高Java應 用的性能和可靠性。
本發明實施例提供了一種Java應用的處理方法,包括SAF代理通過API接口與所述Java應用進行交互,將所述Java應用的請求轉化為 請求消息,發送所述請求消息給SAF伺服器,以使所述SAF伺服器根據所述請求消息,通過 所述SAF代理對所述Java應用進行控制處理,所述SAF代理與所述SAF伺服器通信連接, 所述API為基於Java語言的接口。本發明實施例提供了一種SAF平臺,包括SAF伺服器和與所述SAF伺服器通信連 接的至少一個SAF代理;所述SAF代理,用於通過API接口與Java應用進行交互,將所述Java應用的請求 轉化為請求消息,發送所述請求消息給所述SAF伺服器,所述API為基於Java語言的接口 ;
所述SAF伺服器,用於根據所述請求消息通過所述SAF代理實現對JAVA應用的處 理;本發明實施例提供了一種Java應用的處理系統,包括上述SAF平臺和Java應用, 所述SAF平臺,用於對所述Java應用進行處理本發明實施例中,SAF平臺中的SAF代理通過基於Java語言的API與Java應用 進行交互,以實現對Java應用的處理,基於採用Java語言的API調用,不涉及指針操作,提 高了 Java應用的性能和可靠性。


為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可 以根據這些附圖獲得其他的附圖。圖1為本發明實施例的一種應用系統示意圖;圖2為本發明實施例二提供的一種Java應用的處理方法的流程圖;圖3為本發明實施例三提供的一種Java應用的處理方法的流程圖;圖4為本發明實施例四提供的一種Java應用的處理方法的流程圖;圖5為本發明實施例五提供的一種Java應用的處理方法的流程圖;圖6為本發明實施例六提供的一種Java應用的處理方法的流程圖;圖7為本發明實施例七提供的一種SAF平臺的結構示意圖;圖8為本發明實施例八提供的一種Java應用的處理系統的結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於 本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他 實施例,都屬於本發明保護的範圍。圖1為本發明實施例的一種應用系統示意圖,如圖1所示,該應用系統可以為多種 語言應用並存的分布式計算機系統,該應用系統可包括多個節點,例如圖1中所示的節點 101、節點102、節點103和節點104。
每個節點上均部署有一個SAF伺服器(SAF krver),用於提供對整個節點的控 制,例如HA控制和OM控制。每個節點上部署的SAF伺服器之間存在通信連接,例如TCP/IP 通信。節點101上的SAF伺服器與其它節點上的SAF伺服器之間存在主從關係,即由節點 101上的SAF伺服器提供對其它節點上的SAF伺服器的控制,例如HA控制和OM控制。每 個節點上均部署有一個監控器(Monitor),用於在每個節點的SAF伺服器的指示下啟動或 者停止節點上的各種進程(!Process),並將監控到的各種進程異常退出的事件提交給SAF 伺服器進行處理。每個節點還可以部署一個或者多個進程,例如節點102上的基於C/C++ 語言開發的C/C++進程,節點103和節點104上的基於Java語言開發的Java進程,上述進 程均需要接收SAF伺服器的HA控制和OM控制。具體地,Java進程中可以包括SAF代理、 Java應用和JVM。圖1中SAF伺服器、Monitor和SAF代理可統稱為SAF平臺,各個節點的 SAF伺服器可以統稱為SAF伺服器。其中以節點103為例,節點103中的SAF代理還可稱為 節點103中Java應用所在的SAF代理,節點103中的Monitor還可以稱為節點103中Java 應用所在的Monitor。圖1中所示的應用系統僅為發明實施例的應用環境的示例,而不應成為對本發明 實施例的限制。本發明實施例一提供了一種Java應用的處理方法,該方法基於SAF平臺,該SAF 平臺包括SAF伺服器和與SAF伺服器通信連接的SAF代理,該SAF代理包括以Java語言開 發成的Java組件,該SAF代理與Java應用之間設置API,該API為基於Java語言的接口, 該方法包括SAF平臺通過API與Java應用進行交互以實現對Java應用的處理,即SAF代理通過API接口與所述Java應用進行交互,將所述Java應用的請求轉化為 請求消息,發送所述請求消息給所述SAF伺服器,以使所述SAF伺服器根據所述請求消息, 通過所述SAF代理對所述Java應用進行控制處理,所述SAF代理與所述SAF伺服器通信連 接,所述API為基於Java語言的接口。本實施例中,SAF平臺與Java應用之間設置有API,具體為SAF平臺中的SAF代理 與JAVA應用之間設置有API,該API是基於Java語言的接口,該API是面向對象的。例如, 具有註冊、停止組件等功能的API可如下所示public interface ComponentRegistry { void registerComponent
throws AisLibraryException, AisTimeoutException, AisTryAgainException, AisBadHandleException, AisInitException, AisNoMemoryException, AisNoResourcesExcept ion, AisExistExcept ion, AisUnavai labIeExcept ion;
}
public interface TerminateComponentCallback { void terrainateComponentCallback (long invocation,
java. lang.String componentName);
}本實施例中,SAF平臺的SAF代理為以Java語言開發成的Java組件,SAF平臺通 過基於Java語言的API與Java應用進行交互以實現對Java應用的處理,使Java應用的 開發者僅需掌握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的 開發效率。由於完全基於採用Java語言的API調用,不涉及指針操作,提高了 Java應用的 性能和可靠性。圖2為本發明實施例二提供的一種Java應用的處理方法的流程圖,如圖2所示,該方法包括步驟201、SAF伺服器向Monitor發送啟動進程消息(Start Process),以請求 Monitor Java ;步驟202、Monitor調用作業系統,由作業系統調用API啟動JVM所在的Java進 程;例如,作業系統可以調用「CreateftOcessnAPI啟動Java進程。步驟203、JVM調用SAF代理的API初始化SAF代理;例如,JVM可以調用 「initializeHandle」 API 初始化 SAF 代理。步驟204、SAF代理根據預先約定的編碼解碼協議,將JVM註冊請求編碼為JVM注 冊請求消息;具體地,SAF代理與SAF伺服器可以預先約定跨程式語言的編碼解碼協議,例如, 本實施例中該編碼解碼協議可以為外部數據表示(External Data R印resentation,以下 簡稱=XDR)協議。步驟205、SAF代理將JVM註冊請求消息發送給SAF伺服器;步驟206、SAF伺服器將JVM註冊請求消息解碼為JVM註冊請求,根據JVM註冊請 求接受JVM的註冊;步驟207、SAF伺服器向SAF代理返回JVM註冊成功消息。步驟208、SAF伺服器根據該編碼解碼協議,將Java應用啟動請求編碼為Java應 用啟動請求消息;步驟209、SAF伺服器將Java應用啟動請求消息發送給SAF代理;步驟210、SAF代理根據該編碼解碼協議,將Java應用啟動請求消息解碼為Java 應用啟動請求;步驟211、SAF代理調用JVM的API向JVM申請創建Java應用的實例;步驟212、JVM調用Java應用的API創建Java應用的實例;例如,JVM調用API的類加載機制創建Java應用的實例。步驟213、Java應用調用SAF代理的API向SAF代理請求註冊;步驟214、SAF代理根據該編碼解碼協議,將Java應用註冊請求編碼為Java應用 註冊請求消息;本實施例中,Java應用的請求包括Java應用註冊請求,則轉化為的請求消息包括 Java應用註冊請求消息。步驟215、SAF代理將Java應用註冊請求消息發送給SAF伺服器;步驟216、SAF伺服器根據該編碼解碼協議,將Java應用註冊請求消息解碼為Java 應用註冊請求,並根據Java應用註冊請求接受Java應用的註冊;步驟217、SAF伺服器根據該編碼解碼協議,將應用註冊成功編碼為應用註冊成功 消息;步驟218、SAF伺服器向SAF代理返回Java應用註冊成功消息;步驟219、SAF代理根據該編碼解碼協議,將應用註冊成功消息解碼為應用註冊成 功;步驟220、SAF代理調用Java應用的API向Java應用提示註冊成功。
本實施例中,SAF平臺包括SAF伺服器、SAF代理和Monitor,SAF平臺通過SAF代 理與Java應用之間的API實現對JAVA應用的啟動,在實現對JAVA應用的啟動過程中,Java 應用的開發者僅需掌握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java 應用的開發效率。而且,純Java語言的測試環境,可以開展自動化測試;在出現問題時,只 需要用Java IDE調試Java代碼,不用在Java調試工具與C/C++調試工具之間切換,可調 試性高,完全是API調用,使Java應用性能明顯改善;使用純Java編程,不涉及指針操作, 可以保證Java應用的高可靠性;沒有本地代碼,利用Java語言「一次編寫,到處可用」的可 移植性,提高了 Java應用的可移植性。圖3為本發明實施例三提供的一種Java應用的處理方法的流程圖,如圖3所示, 該方法包括步驟301、SAF伺服器根據預先約定的編碼解碼協議,將Java應用業務分配編碼為 Java應用業務分配消息;步驟302、SAF伺服器向SAF代理髮送Java應用業務分配消息;步驟303、SAF代理根據編碼解碼協議,將Java應用業務分配消息解碼為Java應 用業務分配;步驟304、SAF代理調用Java應用的API向Java應用分配業務。本實施例中,SAF代理通過API與JAVA應用進行交互,SAF伺服器通過SAF代理實 現向JAVA應用分配業務,在實現向JAVA應用分配業務過程中,Java應用的開發者僅需掌 握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。而 且,純Java語言的測試環境,可以開展自動化測試;在出現問題時,只需要用Java IDE調試 Java代碼,不用在Java調試工具與C/C++調試工具之間切換,可調試性高,完全是API調 用,使Java應用性能明顯改善;使用純Java編程,不涉及指針操作,可以保證Java應用的 高可靠性;沒有本地代碼,利用Java語言「一次編寫,到處可用」的可移植性,提高了 Java 應用的可移植性。圖4為本發明實施例四提供的一種Java應用的處理方法的流程圖,如圖4所示, 該方法包括步驟401、Java應用調用SAF代理的API向SAF代理請求OM服務;步驟402、SAF代理根據預先約定的編碼解碼協議,將Java應用的OM服務請求編 碼為OM服務請求消息;本實施例中,Java應用的請求包括OM服務請求,則轉化為的請求消息包括OM服 務請求消息。步驟403、SAF代理向SAF伺服器發送OM服務請求消息;步驟404、SAF伺服器根據編碼解碼協議,將OM服務請求消息解碼為OM服務請求, 並接受Java應用的OM服務請求;步驟405、SAF伺服器向SAF代理返回OM服務響應;步驟406、SAF代理調用Java應用的API向Java應用返回OM服務響應。本實施例中,SAF代理通過API與JAVA應用進行交互,SAF伺服器通過SAF代理 實現向JAVA應用提供OM服務,在實現向JAVA應用提供OM服務過程中,Java應用的開發 者僅需掌握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。而且,純Java語言的測試環境,可以開展自動化測試;在出現問題時,只需要用Java IDE調試Java代碼,不用在Java調試工具與C/C++調試工具之間切換,可調試性高,完全 是API調用,使Java應用性能明顯改善;使用純Java編程,不涉及指針操作,可以保證Java 應用的高可靠性;沒有本地代碼,利用Java語言「一次編寫,到處可用」的可移植性,提高了 Java應用的可移植性。圖5為本發明實施例五提供的一種Java應用的處理方法的流程圖,本實施例中 Java應用包括主用Java應用和備用Java應用,SAF代理包括主用Java應用所在的SAF代 理和備用Java應用所在的SAF代理。如圖5所示,該方法包括步驟501、主用Java應用調用主用Java應用所在的SAF代理的API,向主用Java 應用所在的SAF代理髮送Java應用故障報告;例如,主用Java應用可以調用「r印ortComponentError」 API向主用Java應用所 在的SAF代理髮送Java應用故障報告;步驟502、主用Java應用所在的SAF代理根據預先約定的編碼解碼協議,將Java 應用故障報告編碼為Java應用故障報告消息;本實施例中,Java應用的請求包括Java應用故障報告,則轉化為的請求消息包括 Java應用故障報告消息。步驟503、主用Java應用所在的SAF代理向SAF伺服器發送Java應用故障報告消 息;步驟504、SAF伺服器根據編碼解碼協議將Java應用故障報告消息解碼為Java應 用故障報告,根據Java應用故障報告決定進行故障倒換;步驟505、SAF伺服器向主用Java應用所在的SAF代理,發送根據編碼解碼協議將 Java應用停止服務編碼成的Java應用停止服務消息;步驟506、主用Java應用所在的SAF代理,將Java應用停止服務消息根據該編碼 解碼協議解碼成Java應用停止服務,並調用主用Java應用的API向主用Java應用指示停 止服務;例如,主用Java應用所在的SAF代理可以調用「setcsicallkicklPI向主用Java 應用指示停止服務。步驟507、主用Java應用調用主用Java應用所在的SAF代理的API向主用Java 應用所在的SAF代理報告停止成功;步驟508、主用Java應用所在的SAF代理向SAF伺服器發送根據編碼解碼協議,將 停止成功編碼成的停止成功消息;步驟509、SAF伺服器根據編碼解碼協議將停止成功消息解碼為停止成功,並根據 編碼解碼協議將倒換請求編碼為倒換請求消息;步驟510、SAF伺服器將倒換請求消息發送給備用Java應用所在的SAF代理;步驟511、備用Java應用所在的SAF代理根據編碼解碼協議將倒換請求消息解碼 為倒換請求;步驟512、備用Java應用所在的SAF代理調用備用Java應用的API要求備用Java 應用開始服務;步驟513、備用Java應用開始服務後,調用備用Java應用所在的SAF代理的API向備用Java應用所在的SAF代理提示倒換成功;步驟514、備用Java應用所在的SAF代理向SAF伺服器發送倒換成功響應;步驟515、SAF伺服器根據編碼解碼協議,將刪除服務請求編碼為刪除服務請求消 息;步驟516、SAF伺服器將刪除服務請求消息發送給主用Java應用所在的SAF代理;步驟517、主用Java應用所在的SAF代理根據編碼解碼協議,將刪除服務請求消息 解碼為刪除服務請求;步驟518、主用Java應用所在的SAF代理調用主用Java應用的API要求主用Java 應用刪除服務;步驟519、主用Java應用刪除服務後,調用主用Java應用所在的SAF代理的API 向主用Java應用所在的SAF代理提示刪除成功;步驟520、主用Java應用所在的SAF代理向SAF伺服器發送根據編碼解碼協議,將 刪除成功響應編碼成的刪除成功響應消息。進一步地,本實施例還可以包括當主用Java應用恢復時,停止備用Java應用,並 重新啟動主用Java應用。其中停止備用Java應用包括由SAF伺服器根據主用Java應用恢復進行決策決 定進行恢復,並向備用Java應用所在的SAF代理髮送根據編碼解碼協議將Java應用停止 服務編碼成的Java應用停止服務消息,備用Java應用所在的SAF代理將Java應用停止服 務消息根據該編碼解碼協議解碼成Java應用停止服務,並調用備用Java應用的API向備 用Java應用指示停止服務,備用Java應用調用備用Java應用所在的SAF代理的API向備 用Java應用所在的SAF代理報告停止成功,備用Java應用所在的SAF代理向SAF伺服器 發送根據編碼解碼協議將停止成功編碼成的停止成功消息,SAF伺服器根據編碼解碼協議 將停止成功消息解碼為停止成功。其中重新啟動主用Java應用包括採用實施例二中所述的方法啟動主用Java應 用,其中Java應用為主用Java應用,Monitor為主用Java應用所在的Monitor,JVM為主 用Java應用所在的JVM,SAF代理為主用Java應用所在的SAF代理,此處不再贅述。其中 若Java進程未停止,則無需再執行步驟201至步驟208中所述的過程,僅需執行步驟209 至步驟220啟動主用Java應用即可。本實施例中的主用Java應用所在的SAF代理和備用Java應用所在的SAF代理是 不同的,也就是說本實施例中的Java應用故障倒換和恢復是不同節點上的Java應用的倒 換和恢復,或者是同一節點上不同Java進程的Java應用的倒換和恢復。進一步地,當主用Java應用和備用Java應用是同一 Java進程內的Java應用時, 主用Java應用所在的SAF代理和備用Java應用所在的SAF代理為同一 SAF代理,此時同 一 Java進程內的Java應用的倒換和恢復可採用本實施例中Java應用故障倒換和恢復的 方法來實現,不同之處僅在於主用Java應用所在的SAF代理和備用Java應用所在的SAF 代理為同一 SAF代理,具體不再贅述。本實施例中,主用JAVA應用所在的SAF代理通過API與主用JAVA應用進行交互, 備用JAVA應用所在的SAF代理通過API與備用JAVA應用進行交互,SAF伺服器通過主用 JAVA應用所在的SAF代理和備用JAVA應用所在的SAF代理實現JAVA應用的故障倒換和恢復,在實現JAVA應用的故障倒換和恢復過程中,Java應用的開發者僅需掌握Java語言即 可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。而且,純Java語 言的測試環境,可以開展自動化測試;在出現問題時,只需要用Java IDE調試Java代碼,不 用在Java調試工具與C/C++調試工具之間切換,可調試性高,完全是API調用,使Java應 用性能明顯改善;使用純Java編程,不涉及指針操作,可以保證Java應用的高可靠性;沒 有本地代碼,利用Java語言「一次編寫,到處可用」的可移植性,提高了 Java應用的可移植 性。圖6為本發明實施例六提供的一種Java應用的處理方法的流程圖,本實施例中, Java應用包括主用Java應用和備用Java應用,SAF代理包括主用Java應用所在的SAF代 理和備用Java應用所在的SAF代理,Monitor為所述主用Java應用所在的Monitor。如圖 6所示,該方法包括步驟601、主用Java應用所在的Monitor向SAF伺服器發送主用Java進程異常退 出消息;步驟602、SAF伺服器根據主用Java應用異常退出消息決定進行故障倒換,並根據 編碼解碼協議將倒換請求編碼為倒換請求消息;步驟603、SAF伺服器將倒換請求消息發送給備用Java應用所在的SAF代理;步驟604、備用Java應用所在的SAF代理根據編碼解碼協議將倒換請求消息解碼 為倒換請求;步驟605、備用Java應用所在的SAF代理調用備用Java應用的API要求備用Java 應用開始服務;步驟606、備用Java應用開始服務後,調用備用Java應用所在的SAF代理的API 向備用Java應用所在的SAF代理提示倒換成功;步驟607、備用Java應用所在的SAF代理向SAF伺服器發送根據編碼解碼將倒換 成功響應編碼成的倒換成功響應消息。進一步地,本實施例還可以包括當主用Java進程恢復時,停止備用Java應用,並 重新啟動主用Java應用。其中停止備用Java應用包括採用實施例五中所述的停止備用Java應用的描述, 此處不再贅述。其中重新啟動主用Java應用包括採用實施例二中所述的方法啟動主用Java應 用,其中Java應用為主用Java應用,Monitor為主用Java應用所在的Monitor,SAF代理為 主用Java應用所在的SAF代理,此處不再贅述。其中若Java進程未停止,則無需再執行步 驟201至步驟208中所述的過程,僅需執行步驟209至步驟220啟動主用Java應用即可。本實施例中的主用Java應用所在的SAF代理和備用Java應用所在的SAF代理是 不同的,也就是說本實施例中的Java應用故障倒換和恢復是不同節點上的Java應用的倒 換和恢復,或者是同一節點上不同Java進程的Java應用的倒換和恢復。進一步地,當主用Java應用和備用Java應用是同一 Java進程內的Java應用時, 主用Java應用所在的SAF代理和備用Java應用所在的SAF代理為同一 SAF代理,此時同 一 Java進程內的Java應用的倒換和恢復可採用本實施例中Java應用故障倒換和恢復的 方法來實現,不同之處僅在於主用Java應用所在的SAF代理和備用Java應用所在的SAF代理為同一 SAF代理,具體不再贅述。本實施例中,備用JAVA應用所在的SAF代理通過API與備用JAVA應用進行交互, 主用JAVA應用向SAF伺服器發送主用JAVA應用異常退出消息後,SAF伺服器通過備用JAVA 應用所在的SAF代理實現JAVA應用的故障倒換,以及SAF伺服器通過主用JAVA應用所在 SAF代理和備用JAVA應用所在的SAF代理實現實現JAVA應用的故障倒換和恢復,在實現 JAVA應用的故障倒換和恢復過程中,Java應用的開發者僅需掌握Java語言即可,無需掌 握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。而且,純Java語言的測試環 境,可以開展自動化測試;在出現問題時,只需要用Java IDE調試Java代碼,不用在Java 調試工具與C/C++調試工具之間切換,可調試性高,完全是API調用,使Java應用性能明顯 改善;使用純Java編程,不涉及指針操作,可以保證Java應用的高可靠性;沒有本地代碼, 利用Java語言「一次編寫,到處可用」的可移植性,提高了 Java應用的可移植性。本發明上述實施例的技術方案中,SAF平臺通過基於Java語言的API與Java應 用進行交互,以實現對Java應用的處理,使Java應用的開發者僅需掌握Java語言即可,無 需掌握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。本發明實施例中僅需實 用Java IDE調試Java代碼,當出現問題時容易定位,因此採用本發明實施例的技術方案調 試效率高。本發明實施例的技術方案可應用於純Java語言的測試環境,從而可開展自動化 測試,可測試性好。本發明實施例的技術方案完全採用API調用,有效提高了 Java應用的 性能。本發明實施例的技術方案可採用純Java語言編程,不涉及指針操作,並可利用Java 語言的垃圾回收等安全機制,從而可以保證Java應用的高可靠性。本發明實施例的技術方 案完全採用Java語言編程,不採用任何本地代碼,因此本發明實施例可享有Java語言的可 移植性的優點。圖7為本發明實施例七提供的一種SAF平臺的結構示意圖,如圖7所示,該SAF包 括SAF伺服器11和與SAF伺服器11通信連接的至少一個SAF代理12。SAF代理12,用於通過API接口與Java應用進行交互,將所述Java應用的請求轉 化為請求消息,發送所述請求消息給所述SAF伺服器11,所述API為基於Java語言的接口 ;SAF伺服器11,用於根據所述請求消息通過所述SAF代理12實現對JAVA應用的 處理。在本實施例中,SAF伺服器11通過SAF代理12實現對JAVA應用的處理,SAF代理 12為以Java語言開發成的Java組件,SAF代理12與Java應用之間設置API,該API為基 於Java語言的接口。SAF代理12可通過SAF代理12與Java應用之間設置的API與Java 應用進行交互以實現對Java應用的處理。其中,本實施例中以二個SAF代理12為例,該二個SAF代理12可以位於同一節點 內,也可以位於不同的節點內。當二個SAF代理12位於同一節點內時,該二個SAF代理12 屬於同一節點內的不同Java進程。進一步地,本實施例中的SAF平臺還可以包括至少一個與SAF伺服器11通信連接 的Monitor 13。當二個SAF代理12位於不同的節點內時,SAF平臺包括二個Monitor 13, 每個Monitor 13位於一個節點內,並對應於一個SAF代理12,圖7中所示情況。當二個SAF 代理12位於同一節點內時,SAF平臺1包括一個Monitor 13。Monitor 13可以在SAF服 務器11的指示下啟動或者停止Java進程。Monitor 13還可以對Java進程進行監控,並將監控到的Java進程異常退出的事件提交給SAF伺服器11。本實施例中的SAF平臺可用於實現上述實施例一至實施例六中的技術方案,具體 可參見實施例一至實施例六中的描述,此處不再贅述。本實施例中,SAF平臺的SAF代理為以Java語言開發成的Java組件,SAF平臺通 過基於Java語言的API與Java應用進行交互以實現對Java應用的處理,使Java應用的 開發者僅需掌握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的 開發效率。而且,純Java語言的測試環境,可以開展自動化測試;在出現問題時,只需要用 Java IDE調試Java代碼,不用在Java調試工具與C/C++調試工具之間切換,可調試性高, 完全是API調用,使Java應用性能明顯改善;使用純Java編程,不涉及指針操作,可以保證 Java應用的高可靠性;沒有本地代碼,利用Java語言「一次編寫,到處可用」的可移植性,提 高了 Java應用的可移植性。圖8為本發明實施例八提供的一種Java應用的處理系統的結構示意圖,如圖8所 示,該系統包括SAF平臺1和Java應用2,SAF平臺1包括SAF伺服器11和與SAF伺服器 11通信連接的至少一個SAF代理12,SAF代理12為以Java語言開發成的Java組件,每個 SAF代理12對應於至少一個Java應用2,SAF代理12與Java應用2之間設置API,該API 為基於Java語言的接口,SAF平臺1通過API與Java應用2進行交互以實現對Java應用 2的處理。進一步地,本實施例中的系統還可以包括JVM 3,該JVM 3與SAF代理12之間設置 有API,該JVM 3還與Java應用2之間設置有API。JVM 3可通過與SAF代理12之間設置 的API與SAF代理12進行交互,JVM 3還可以通過與Java應用2之間設置的API與Java 應用2進行交互。本實施例的系統中可運行多個Java進程,Java進程可包括SAF代理12、JVM 3和 至少一個Java應用2。其中,Java進程上可運行一個或者多個Java應用2,圖8中的每 個Java進程上運行一個Java應用2。JVM 3作為Java進程的運行環境,是SAF代理12和 Java應用2的工作平臺。SAF代理12為SAF伺服器11在Java進程中的代理,可通過API 接口與Java應用2進行交互實現對Java應用2的直接控制。Java應用2用於實現業務邏 輯,並通過SAF代理12接受SAF伺服器11的間接控制。進一步地,SAF平臺1還可以包括至少一個與SAF伺服器11通信連接的Monitor 13。Monitor 13可以在SAF伺服器11的指示下啟動或者停止Java進程。Monitor 13還 可以對Java進程進行監控,並將監控到的Java進程異常退出的事件提交給SAF伺服器11。Java應用的處理系統可包括多個節點,例如,上述本實施例的系統中的各個模塊 可組成二個節點,節點1和節點2。如圖8所示,每個節點可包括Monitor 13、該節點的SAF 伺服器和至少一個Java進程,例如節點1包括節點1的SAF伺服器,節點2包括節點2的 SAF伺服器。而其中SAF伺服器11包括節點1的SAF伺服器和節點2的SAF伺服器。本實施例中的系統可用於實現上述實施例一至實施例六中的技術方案,具體可參 見實施例一至實施例六中的描述,此處不再贅述。本實施例的系統中,SAF平臺的SAF代理為以Java語言開發成的Java組件,SAF 平臺通過基於Java語言的API與Java應用進行交互以實現對Java應用的處理,使Java 應用的開發者僅需掌握Java語言即可,無需掌握C/C++語言和JNI機制,從而提高了 Java應用的開發效率。而且,純Java語言的測試環境,可以開展自動化測試;在出現問題時,只 需要用Java IDE調試Java代碼,不用在Java調試工具與C/C++調試工具之間切換,可調 試性高,完全是API調用,使Java應用性能明顯改善;使用純Java編程,不涉及指針操作, 可以保證Java應用的高可靠性;沒有本地代碼,利用Java語言「一次編寫,到處可用」的可 移植性,提高了 Java應用的可移植性。 最後應說明的是以上實施例僅用以說明本發明的技術方案而非對其進行限制, 儘管參照較佳實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依 然可以對本發明的技術方案進行修改或者等同替換,而這些修改或者等同替換亦不能使修 改後的技術方案脫離本發明技術方案的精神和範圍。
權利要求
1.一種Java應用的處理方法,其特徵在於,所述方法包括業務可用性論壇SAF代理通過API接口與所述Java應用進行交互,將所述Java應用 的請求轉化為請求消息,發送所述請求消息給SAF伺服器,以使所述SAF伺服器根據所述請 求消息,通過所述SAF代理對所述Java應用進行控制處理,所述SAF代理與所述SAF服務 器通信連接,所述API為基於Java語言的接口。
2.根據權利要求1所述的方法,其特徵在於,所述SAF代理通過API接口與所述Java 應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器, 以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處 理,包括SAF代理接收SAF伺服器發送的根據預先約定的編碼解碼協議將Java應用啟動請求編 碼成的Java應用啟動請求消息;SAF代理根據所述編碼解碼協議將所述Java應用啟動請求消息解碼為Java應用啟動 請求;SAF代理在調用JAVA虛擬機JVM的API向JVM申請創建JaVa應用的實例,由JVM調 用Java應用的API創建Java應用的實例並且由Java應用調用SAF代理的API向SAF代 理請求註冊之後,根據所述編碼解碼協議將Java應用註冊請求編碼為Java應用註冊請求 消息;SAF代理將Java應用註冊請求消息發送給SAF伺服器,由SAF伺服器根據所述編碼解 碼協議將Java應用註冊請求消息解碼為Java應用註冊請求,並根據Java應用註冊請求接 受Java應用的註冊。
3.根據權利要求2所述的方法,其特徵在於,所述SAF代理通過API接口與所述Java 應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器, 以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處理 之前,還包括SAF代理在監控器Monitor根據SAF伺服器發送的啟動進程消息調用作業系統並由操 作系統調用API啟動JVM所在的Java進程之後,根據所述編碼解碼協議將JVM註冊請求編 碼為JVM註冊請求消息;SAF代理將JVM註冊請求消息發送給SAF伺服器,由SAF伺服器根據所述編碼解碼協議 將JVM註冊請求消息解碼為JVM註冊請求,並根據JVM註冊請求接受JVM的註冊。
4.根據權利要求1所述的方法,其特徵在於,所述SAF代理通過API接口與所述Java 應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器, 以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處 理,包括SAF代理接收SAF伺服器發送的根據預先約定的編碼解碼協議將Java應用業務分配編 碼成的Java應用業務分配消息;SAF代理根據所述編碼解碼協議將所述Java應用業務分配消息解碼為Java應用業務 分配;SAF代理調用API向Java應用分配業務。
5.根據權利要求1所述的方法,其特徵在於,所述SAF代理通過API接口與所述Java應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器, 以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處 理,包括SAF代理在Java應用調用SAF代理的API向SAF代理請求操作維護OM服務之後,根據 預先約定的編碼解碼協議將Java應用的OM服務請求編碼為OM服務請求消息; SAF代理向SAF伺服器發送OM服務請求消息;SAF代理接收SAF伺服器根據所述編碼解碼協議將OM服務請求消息解碼為OM服務請 求並接受Java應用的OM服務請求之後返回的OM服務響應;SAF代理調用Java應用的API向Java應用返回OM服務響應。
6.根據權利要求1所述的方法,其特徵在於,所述Java應用包括主用Java應用,所述 SAF代理包括所述主用Java應用所在的SAF代理;則所述SAF代理通過API接口與所述 Java應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF服 務器,以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控 制處理,包括主用Java應用所在的SAF代理接收主用Java應用調用主用JaVa應用所在的SAF代 理的API發送的Java應用故障報告;主用Java應用所在的SAF代理根據預先約定的編碼解碼協議將Java應用故障報告編 碼為Java應用故障報告消息;主用Java應用所在的SAF代理向SAF伺服器發送Java應用故障報告消息; 主用Java應用所在的SAF代理接收SAF伺服器根據所述編碼解碼協議將Java應用故 障報告消息解碼為Java應用故障報告並根據Java應用故障報告決定進行故障倒換之後發 送的Java應用停止服務消息;主用Java應用所在的SAF代理調用主用Java應用的API向主用Java應用指示停止 服務;主用Java應用所在的SAF代理在主用Java應用調用主用JaVa應用所在的SAF代理 的API向主用Java應用所在的SAF代理報告停止成功之後向SAF伺服器發送停止成功消 肩、ο
7.根據權利要求6所述的方法,其特徵在於,所述Java應用還包括備用Java應用,所 述SAF代理還包括所述備用Java應用所在的SAF代理;則所述SAF代理通過API接口與所 述Java應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF 伺服器,以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行 控制處理,還包括備用Java應用所在的SAF代理接收SAF伺服器發送的根據所述編碼解碼協議將倒換 請求編碼成的倒換請求消息;備用Java應用所在的SAF代理根據編碼解碼協議將倒換請求消息解碼為倒換請求; 備用Java應用所在的SAF代理調用備用Java應用的API要求備用Java應用開始服務;備用Java應用所在的SAF代理在備用Java應用調用備用Java應用所在的SAF代理 的API向備用Java應用所在的SAF代理提示倒換成功之後,向SAF伺服器發送倒換成功響應。
8.根據權利要求7所述的方法,其特徵在於,所述SAF代理通過API接口與所述Java 應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器, 以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處 理,還包括主用Java應用所在的SAF代理接收SAF伺服器發送的根據所述編碼解碼協議將刪除 服務請求編碼成的刪除服務請求消息;主用Java應用所在的SAF代理根據所述編碼解碼協議將刪除服務請求消息解碼為刪 除服務請求;主用Java應用所在的SAF代理調用主用Java應用的API要求主用Java應用刪除服 務,由主用Java應用刪除服務後,調用主用Java應用所在的SAF代理的API向主用Java 應用所在的SAF代理提示刪除成功。
9.根據權利要求1所述的方法,其特徵在於,所述Java應用包括主用Java應用和備 用Java應用,所述SAF代理包括所述備用Java應用所在的SAF代理;則所述SAF代理通 過API接口與所述Java應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述 請求消息給SAF伺服器,以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述 Java應用進行控制處理,包括備用Java應用所在的SAF代理在SAF伺服器根據主用Java應用所在的Monitor發送 的主用Java進程異常退出消息決定進行故障倒換之後,接收SAF伺服器發送的根據預先約 定的編碼解碼請求將倒換請求編碼成的倒換請求消息;備用Java應用所在的SAF代理根據所述編碼解碼請求將倒換請求消息編碼為倒換請求;備用Java應用所在的SAF代理調用備用Java應用的API要求備用Java應用開始服 務,在備用Java應用開始服務後調用備用Java應用所在的SAF代理的API向備用Java應 用所在的SAF代理提示倒換成功。
10.一種SAF平臺,其特徵在於,包括SAF伺服器和與所述SAF伺服器通信連接的至少 一個SAF代理;所述SAF代理,用於通過API接口與Java應用進行交互,將所述Java應用的請求轉化 為請求消息,發送所述請求消息給所述SAF伺服器,所述API為基於Java語言的接口 ;所述SAF伺服器,用於根據所述請求消息通過所述SAF代理實現對JAVA應用的處理。
11.根據權利要求10所述的SAF平臺,其特徵在於,還包括至少一個與所述SAF服務 器通信連接的Monitor ;所述Monitor,用於在所述SAF伺服器的指示下啟動或者停止Java進程,以及對JAVA 進程進行監控,並將監控到的JAVA進程異常退出的事件提交給所述SAF伺服器。
12.根據權利要求10所述的SAF平臺,其特徵在於,所述SAF代理包括以Java語言開 發成的Java組件。
13.一種Java應用的處理系統,其特徵在於,包括如權利要求10至12任一項權利要求 所述的SAF平臺和Java應用,所述SAF平臺,用於對所述Java應用進行處理。
全文摘要
本發明實施例公開了一種Java應用的處理方法、系統和SAF平臺。該方法包括SAF代理通過API接口與所述Java應用進行交互,將所述Java應用的請求轉化為請求消息,發送所述請求消息給SAF伺服器,以使所述SAF伺服器根據所述請求消息,通過所述SAF代理對所述Java應用進行控制處理,所述SAF代理與所述SAF伺服器通信連接,所述API為基於JaVa語言的接口。本發明實施例中,SAF平臺通過基於Java語言的API與Java應用進行交互,以實現對Java應用的處理,基於採用Java語言的API調用,不涉及指針操作,提高了Java應用的性能和可靠性。
文檔編號G06F9/46GK102081548SQ200910246520
公開日2011年6月1日 申請日期2009年11月30日 優先權日2009年11月30日
發明者閆彥君 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀