一種將ejb接入企業服務總線的方法
2023-07-20 09:27:11
專利名稱:一種將ejb接入企業服務總線的方法
技術領域:
本發明涉及企業服務總線領域,主要是一種將EJB接入企業服務總線的方法。
背景技術:
企業服務總線作為應用系統的連接中樞,是構築SOA(Service Oriented Architecture, 面向服務架構)為基礎的企業信息系統的必要元素。企業服務總線的定義可以簡單的理解為 由中間件技術實現並支持SOA的一組基礎架構,支持異構環境中的服務、消息以及基於事件 的交互,並且具有適當的服務級別和可管理性。通過企業服務總線實現應用系統的快速接入, 並通過更高級的事件、流程處理能力,能夠很好的將企業信息系統與實際業務協調起來,在 保證原有投資的條件下,實現更加靈活和敏捷的企業信息系統改造。
JBI是針對ESB的一種規範及API,提供了規範化消息服務、組件框架和管理模型,用以部 署路由引擎、規則引擎、以及信息轉換等集成服務.也就是說JBI是關於ESB的一種具體描述, 同時JBI也是一種基於SOA的EAI,它是一種面向服務的用來解決企業應用集成的方案.它的 主要目的是為了不同異構的系統能夠通過統一的消息規範和統一的消息總線來相互通訊.它 之所以採用面向服務的體系結構,是因為這樣可以降低異構系統的耦合度。其中規範化消息服 務中的一些概念在下文提到,包括服務消費者和提供商,規範化消息。在下文中,調用EJB 的組件作為服務消費者,而引擎則充當了服務提供者。終點(Endpoint)表示一種特殊的地址, 能夠通過某種特殊的協議訪問,代表服務的地址。服務的提供者和消費者組件他們之間的交 互是通過消息路由(NMR),提供商通過endpoint將服務激活,並提供有關服務定義的原數據。 當出現服務請求時,隨R根據消費者所需服務的地址信息選擇一種方式來確定一個服務提供 商,並將消息轉發給最終確定的對象。在服務調用完成後,麗R再將相應的消息返回給消費 者。下面消費者組件調用EJB的Soap消息就是放到標準消息(NM)的內容中的。
另一方面,J2EE是第一個為業界所廣為接受的完整的企業應用框架,而EJB在其中扮演 重要角色,廣泛的得到了業界的支持,已經成為應用伺服器的標準技術.從企業應用多層結 構的角度,EJB是商業邏輯層的構件技術,於JAVA BEANS不同,他提供了事務處理的能力,自從三層結構提出,中間層,也就是商業邏輯層,是處理事務的核心,由於從數據存儲層分 離,他就取代了存儲進程的大部分地位。從分布式計算的角度,EJB像CORBA —樣,提供了 分布式技術的基礎.提供了對象之間的通訊手段。在J2EE框架的支持下,運行在EJB容器中 的EJB,完全符合企業應用關於分布、移植、安全和交易的要求。
通過企業服務總線實現應用系統的快速接入,使EJB接入企業服務總線變得迫切,而今 的EJB的接入企業服務總線的方法一般是通過服務端將EJB部署為Web Service的相應客戶 端調用,例如應用伺服器上是通過AXIS將EJB發布成Web Service的。Axis提供了對Web Service的基本支持,主要包括對SOAP的支持,WSDL的解析,WSDL文件到Java類的映射, SOAP信息到Java方法的轉換和映射,Web Service的部署和發布,用戶自定義類的序列化和 反序列化等等,這些對實現EJB Web Service提供了底層支持。Axis具有高度的可配置性和 可擴展性,有利於應用伺服器對它的集成。所有的Web Service都是使用同一個servlet接 收信息。這個servlet根據URL中的參數確定調用的是哪一個Web Service,然後對調用做 必要的檢查和處理後交給Axis處理,再將由Axis包裝好的返回消息發送給客戶端。通常的 訪問EJB Web Service的方法是利用AXIS的客戶端接口來構造SOAP消息,然後通過HTTP協 議傳輸此消息到指定的埠。在AXIS服務端,有監聽程序監聽此埠,然後接收到SOAP請 求,對此SOAP消息做相應處理生成消息內容,最後激活AXIS的處理框架,AXIS處理框架的 任務是按照部署配置的Handler依次對消息內容進行處理,並最終調用到指定的EJB。因為 ESB容器和應用伺服器是在同一 JVM下的,對於這種通過HTTP協議傳輸消息然後訪問Web服 務的方式效率並不高。因此,需要尋求一種快速,簡便的方式,而這正是本發明所要解決的 問題。
發明內容
本發明要解決上述技術所存在的缺陷,提供一種將EJB接入企業服務總線的方法,使jbi 內部組件簡單高效地調用部署成Web service的EJB。
本發明解決其技術問題所採用的技術方案這種將EJB接入企業服務總線的方法,步驟 如下EJB Web Servcie模塊通過集成Axis實現EJB對Web Service的支持,使用Stateless Session Bean作為Web Service的端點,而在ESB內部環境中,jbi endpoint是作為一個 組件也就是服務的地址,通過消息路由到指定jbi端點就能訪問相應的組件。那麼如果在引 擎內部建立jbi端點和EJB部署成Web Service的端點的一對一的聯繫,訪問.jbi端點的信
息就可以映射到具體的部署的EJB Web Service 了。同時,在引擎內部保持jbi端點信息和 EJB Web Service的端點的同步,當有新的EJB Web Service部署成功後,則在ESB環境中 為引擎激活相應的jbi端點,代表了這種服務的存在。當EJB Web Service被反部署後,則 在ESB環境中為引擎反激活相應的jbi端點,代表註銷了這種服務,從而保持了同步。
jbi環境內部通信的消息內容是Source形式,可以是xml格式的soap消息內容。消費者 組件調用Web Service,以標準消息的形式(內容為soap消息),通過指定所要調用的Web Service端點路由到j2ee引擎,因為引擎已做了隱式的對應。
j2ee引擎把根據訪問消息直接構造axis的處理引擎ServerEngine能夠處理的消息內容 交由axis的處理引擎來處理,此處理引擎根據要調用的Web Service初始化相應的handler 進行相應的EJB調用,並將調用結果以soap消息封裝在消息內容的回覆消息裡,然後j2ee 引擎把調用的結果返回給jbi消費者組件。至此為止,jbi內部組件成功地調用部署成Web Service的EJB,在應用伺服器端成功地避開了 Svelte接收,從而繞開了 http。
本發明有益的效果是
1. jbi組件能夠通過本引擎方便快速地調用部署在應用伺服器上並發布成Web Service
的EJB。
2. 成功地繞開http協議,比傳統的Web服務客戶端的訪問性能提高了三倍。
3. 引擎能夠進行服務的隱式的對應,並能夠對服務進行方便高效的管理。
圖l為總的流程圖2為保持應用伺服器上的EJB Web Service和J2EE引擎上的服務的同步示意圖3為消費者組件調用EJB,指定EJB Web Service的地址,路由so鄰消息到引擎的示意
圖4為引擎構造axis引擎能處理的消息,調用後並將消息返回的示意圖。
具體實施例方式
下面結合附圖和實施例對本發明作進一步介紹
子流程1:保持應用伺服器上的EJB Web Service和J2EE引擎上的服務的同步 如圖2所示,當J2EE引擎啟動的時候,如果已有EJB發布成Web Service,那麼在AxisService (AXIS的服務引擎)中保存著一張EJB Web Service列表,包含一個鍵值對,包含 服務ID和EJB Web Service地址。在J2EE引擎啟動初始化的過程中建立和JTang應用服務 器的連接,啟動同步的輪詢線程,保持應用伺服器上的EJB Web Service列表和J2EE引擎上 的服務列表的同步,線程掃描一遍J2EE引擎上的服務列表,如果發現當前引擎的服務列表中 的服務ID和EJB Web Service列表中的ID有不同,則進行相應的增減。即當有新的EJB部 署並被AXIS發布成Web Service,則相應在引擎激活一個jbi端點(代表服務的地址),端 點由兩部分組成引擎的QName和EJB Web Service的地址。同樣,當EJB被反部署後,則 在引擎上將相應的jbi端點鈍化,以此達到同步。在這同步的過程中,建立引擎服務和EJB 的隱式對應。
子流程2:消費者組件指定要調用EJB Web Service的地址,so邵消息將被路由到引擎 如圖3所示,當一個jbi消費者組件調用EJB,可以根據引擎的QName和EJB Web Service 的地址從jbi環境中得到jbi端點(已被引擎激活),構造標準jbi消息(消息內容是soap 消息),指定jbi端點路由消息。ESB提供的消息路由機制能夠使消息路由到消息指定的jbi 端點所對應的那個組件,在這裡也就是J2EE引擎。當引擎接收到標準jbi消息後,獲取so即 消息,然後根據消息交換中的jbi端點獲取EJB Web Service的地址,得到引擎處理器對象 後構造MessageContext (消息內容),該消息內容為Axis引擎處理器能夠處理的對象。 MessageContext是一個包含三個重要部分的結構請求消息、響應消息和一系列的屬性。 調用Axis的途徑有兩種
A、 作為月艮務器端,TransportListener創建MessageContext並調用Axis Processing Framework。
B、 作為客戶端,應用程式代碼(通常是通過客戶端Axis模塊半自動地)創建 MessageContext並調用Axis Processing Framework。
無論是哪一種方式,Axis Processing Framework的工作都是簡單地通過一系列預先配置的 Handlers來傳遞結果MessageContext, MessageContext包含所有相關的請求和響應信息。 在這裡我們選擇的是B的方式。
子流程3:引擎接到jbi消息後,構造axis引擎能夠處理的消息內容,調用axis引 擎提供的接口進行處理如圖4所示J2EE引擎獲取Axis引擎處理器對象,調用其中的invoke (MessageContext) 方法,該處理框架根據MessageContext中的EJB Web Service的地址初始化相應的handler, 各handler依次對MessageContext進行處理,並最終調到相應的EJB Web Service,並將調 用的結果作為MessageContext的回覆內容。J2EE引擎根據回復內容重新封裝成jbi標準消 息路由給消費者組件,這樣就標誌著一次成功調用的結束。
上述實施例用來解釋說明本發明,而不是對本發明進行限制,在本發明的精神和權利要 求的保護範圍內,對本發明作出的任何修改和改變,都落入本發明的保護範圍。
權利要求
1、一種將EJB接入企業服務總線的方法,其特徵在於步驟如下在引擎內部建立jbi端點和EJB部署成Web Service的端點的一對一的聯繫,將訪問jbi端點的信息映射到具體的部署的EJB Web Service;在引擎內部保持jbi端點信息和EJB Web Service的端點的同步,當有新的EJB Web Service部署成功後,則在ESB環境中為引擎激活相應的jbi端點,代表了這種服務的存在;當EJB Web Service被反部署後,則在ESB環境中為引擎反激活相應的jbi端點,代表註銷了這種服務。
2、 根據權利要求1所述的將EJB接入企業服務總線的方法,其特徵在於jbi環境內部 通信的消息內容是Source形式,採用xml格式的so即消息內容,消費者組件調用Web Service,以標準消息的形式,通過指定所要調用的Web Service端點路由到j2ee引擎。
3、 根據權利要求2所述的將EJB接入企業服務總線的方法,其特徵在於j2ee引擎把 根據訪問消息直接構造axis的處理引擎ServerEngine能夠處理的消息內容交由axis的處 理引擎來處理,此處理引擎根據要調用的Web Service初始化相應的handler進行相應的EJB 調用,並將調用結果以so即消息封裝在消息內容的回覆消息裡,然後j2ee引擎把調用的結 果返回給jbi消費者組件。
全文摘要
本發明涉及一種將EJB接入企業服務總線的方法,步驟如下在引擎內部建立jbi端點和EJB部署成Web Service的端點的一對一的聯繫,訪問jbi端點的信息就可以映射到具體的部署的EJB Web Service了。同時,在引擎內部保持jbi端點信息和EJB Web Service的端點的同步,當有新的EJB Web Service部署成功後,則在ESB環境中為引擎激活相應的jbi端點,代表了這種服務的存在。當EJB Web Service被反部署後,則在ESB環境中為引擎反激活相應的jbi端點,代表註銷了這種服務,從而保持了同步。本發明有益的效果是jbi組件能夠通過本引擎方便快速地調用部署在應用伺服器上並發布成Web Service的EJB。成功地繞開http協議,比傳統的Web服務客戶端的訪問性能提高了三倍。引擎能夠進行服務的隱式的對應,並能夠對服務進行方便高效的管理。
文檔編號H04L29/08GK101339520SQ20071015670
公開日2009年1月7日 申請日期2007年12月4日 優先權日2007年12月4日
發明者健 吳, 吳朝暉, 尹建偉, 瑩 李, 健 蔣, 鄧水光, 路 金, 陳韓偉 申請人:浙江大學