京高偉達軟件技術有限公司,北京 100013)
摘要:在系統與系統的交互過程中,很多系統都無法實現系統與系統間操作的實時交互性以及數據的同步性,而需要通過接口系統采用跑批的方式來實現系統間數據的同步性。該文介紹一種實時交互的組件――Link-easy的實現,該組件可以解決系統與系統之間的實時交互問題。
關鍵詞:Link-easy;套接字;報文
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)32-1129-02
Application of Oracle Materialized View in Data Warehouse
YANG Jun 1, YUAN Zhen-wu2 ,XIE Ren-dong3
(1.Department of Information Management Engineering ,Jiangxi Toursm Commerce College,Nanchang 330039,China;2.Jiangxi Information Center,Nanchang 330001,China;3.Beijing Global InfoTech Group,Beijing 100013,China)
Abstract: In the system and the system of interactive process, many systems are unable to achieve the real-time operating, as well as interactive data synchronization, and they need to go through the interface system approved by the systems approach to achieve the synchronization of data. This article introduced a real-time interactive components-- Link-easy to achieve, which can be solved with real-time interaction between the issues.
Key words: Link-easy; socket; message
1 引言
Link-easy組件是本人設計開發實現的一種底層框架服務,其實現了系統與系統之間的實時交互功能。系統與系統之間的交互需要以網絡作為途徑,Link-easy組件實現采用JAVA技術,遵循J2EE體系規范及TCP/IP協議標準。
2 J2EE簡介
J2EE是一種利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優點,例如\"編寫一次、隨處運行\"的特性、方便存取數據庫的JDBC API、CORBA技術以及能夠在Internet應用中保護數據的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業開發者大幅縮短投放市場時間的體系結構。
J2EE體系結構提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統一的開發平臺,J2EE降低了開發多層應用的費用和復雜性,同時提供對現有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。
3 Link-easy組件的實現及其應用
在銀行信息管理中,存在多套系統同時運行來完成各種業務,而這些系統中數據的同步一般都是每天晚上通過接口系統跑批來實現的。為了實現各個系統操作業務的實時交互性、及其數據的同步性,我們開發了Link-easy組件來實現以上功能。下面以某商業銀行信貸管理系統與該銀行的其他系統交互的例子來介紹Link-easy組件的實現及其應用。該行信貸管理系統是采用J2EE技術實現的,Link-easy組件作為該系統框架的一個底層組件,也是遵循J2EE技術規范來實現,同時該組件也符合同其他系統接口的規則約定。
1) Link-easy組件的功能
Link-easy 組件實現信貸管理系統與外部系統連接實時交互。
Link-easy 組件提供以下功能:
被動接收外部系統發送的報文,調用業務處理類完成必要業務處理,并回執反饋信息給外部統。
主動將業務邏輯數據組裝成報文發送致外部系統,并接收外部系統的反饋信息,確認對方已正確收到信息。
2) Link-easy組件的應用
由于銀行的特殊性,各個系統的交互不是直接兩個系統相連接,系統與系統之間有一臺前置服務器,信貸系統操作的業務數據發送到前置服務器;或者從前置服務器接收報文來完成業務處理。而其他外部系統也是同前置服務器進行交互。信貸管理系統與其他系統交互的數據是通過報文的形式來傳輸的,其在網絡中體現為流。信貸管理系統與其他外部系統交互的網絡模型如圖1。
3) 發送報文
信貸管理系統通過Link-easy組件將業務數據封裝成報文發送到前置服務器上,然后接收前置服務器的反饋報文信息。在發送報文的時候,Link-easy組件相當于客戶端,而前置服務器是服務器端。客戶端向服務器端發出報文信息,首先需要建立連接,然后向服務器端發送報文,發送完報文后馬上從服務器端接收一條反饋報文信息,以上兩步操作需要在一次網絡通道內完成。其功能圖如圖2。
報文發送代碼如下:
public synchronized String send(BaseVO baseVO)
throws ServiceException {
//取得報文信息VO
MessageVO messageVO = (MessageVO) baseVO;
try {
//取得連接
Socket socket =createSocket();
//取得PrintWriter對象,該對象用于發送報文
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
//發送報文消息
out.println(messageVO.getMessageValue());
// 發送消息后,接受外部系統返回的狀態報文信息
InputStream in = socket.getInputStream();
//以字符串方式讀取報文
BufferedReader reader = new BufferedReader(new InputStreamReader(in, \"GB2312\"));
String socketMessage = reader.readLine();
//關閉連接
socket.close();
//返回反饋報文信息
return socketMessage;}
catch (IOException e)
{throw new ServiceException(e);}}
4)接受報文
信貸管理系統通過Link-easy組件來接收前置服務器發送來的報文信息。信貸管理系統有一個啟動類,該類隨著web服務器的啟動而啟動運行,啟動類繼承java.net.ServerSocket類(服務器socket等待請求通過網絡傳入),同時創建一個監聽線程類,用來監聽接受報文信息。當前置服務器發送來一條報文時候,監聽線程啟動一個獨立的報文處理線程來處理接收到的報文信息,報文處理程序通過反射機制調用相關的業務處理類來完成業務操作,完成操作后需要反饋一條處理結果報文信息,以上操作需要在一次網絡通道內完成。其功能圖如圖3。
接收報文代碼如下:
public void accept() throws ServiceException {
try {
//返回socket輸入流,即接收報文
InputStream in = socket.getInputStream();
//返回socket輸出流,取得發送報文對象
OutputStream out = socket.getOutputStream();
PrintWriter pw = new PrintWriter(out, true);
//解析報文
MessageVO messageVO= (MessageVO)messageParser(in);
//調用業務邏輯類執行報文處理邏輯,同時返回反饋報文VO對象
messageVO = (MessageVO)doAccept(messageVO);
//發送反饋報文
pw.println(messageVO.getMessageValue());}
catch (IOException e)
{throw new ServiceException(e);}}
4 結束語
Link-easy組件針對一個企業應用的基礎運行環境的要求,采用松散耦合的設計來解決某一方面的特定問題,并且與其他組件有機的結合為一個整體。Link-easy盡量使編程API簡化,并且輔助以管理手段和技術框架的高抽象,最大限度的收縮開發人員的關注面,從而讓其專注于業務功能的實現。
參考文獻:
[1] Kumar B V,Sangeetha S, Subrahmanya S V.深入淺出J2EE架構[M].宋梅,張學平,譯.北京:清華大學出版社,2006.
[2] 謝希仁.計算機網絡[M].4版.北京:電子工業出版社,2003.
[3] Horstmann C S, Cornell G.JAVA2核心技術(卷I).基礎知識[M].7版.陳昊鵬,譯.北京:機械工業出版社,2006.