建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和記娛樂和記怡情AG:在 WID 中使用 SCA Web 服務綁定傳遞 SOAP Header

?

1. 小序

跟著SCA (Service Component Architecture)規范的廣泛推廣, SCA編程模型和記娛樂和記怡情AG和IBM 支持SCA的產品系列如WebSphere Process Service(WPS),IBM WebSphere Enterprise Service Bus(WESB)越來越多的利用于實際的大年夜型IT臨盆情況和營業集成中。SCA組件對營業數據進行操作,并應用統一的數據款式—— SDO(Service Data Object)來表達營業數據,并在SCA組件之間進行通報。

然則在許多實際項目運營歷程中,搭建純真的相符SCA規范的IT架構一樣平常難以實現,基于SOA可重用理念,很多環境下必要實現SCA組件和外部非SCA模塊之間的集成,而這些模塊每每是基于已有的J2EE平臺實現的EJB、JMS終端或者能夠吸收SOAP消息的Web Service。IBM WebSphere Integration Developer(WID)在集成圖(Assembly Diagram)上供給了SCA導入組件來引用外部的各類類型的辦事組件,以及SCA導出組件來將內部的SCA組件裸露為可以和外部多種模塊交互的辦事接口,而所有這些交互類型都經由過程導入、導出組件上的綁定(Binding)類型來指定。截止到2007年頭?年月IBM宣布的WID V6.0.2,用戶可以指定的綁定類型包括:

SCA 綁定

Web辦事綁定

無狀態Session Bean綁定

消息綁定,包括JMS 綁定,MQ 綁定,MQ JMS 綁定

本文偏重于SCA導入、導出組件中對Web Serv和記娛樂和記怡情AGice Binding的利用。該綁定能夠在標準SOAP消息和SDO之間進行款式轉換。SDO在進入SCA天下后被包裝了相關的SCA協議頭而成為在SCA組件之間通報的SMO(Service Message Object)。理論上來講,SMO應該有完備的和記娛樂和記怡情AG元數據款式以映射到SOAP的Schema,此中除了用于通報功能性調用的SOAP Body外,用于攜帶QoS以及非功能需求的SOAP Header也是緊張的組成部分。WID的實現也確鑿做到了這一點,然則筆者在組內的項目中經歷了一番挫折才熟識到WPS運行時情況對實現SOAP Header在SOAP和SMO之間通報的特殊設置設置設備擺設擺設要求。本文便是想共享這方面的履歷,盼望無論是從事實際項目開拓的軟件工程師,照樣在實驗室中從事相關課題技巧探索的鉆研職員能夠從中獲益,節省寶貴的研發光陰。

2. 一個范例場景

筆者經由過程對所從事的項目進行技巧抽象,得出以下的范例場景:

圖1 一個范例的應用SCA中心模塊基于SOAP Header進行辦事拔取的場景

如圖1所示,假設一個Web辦事哀求客戶端必要哀求兩個Web辦事:Echo Web辦事1和Echo Web 辦事2。這兩個Web辦事雖然都供給了回應哀求字符串的功能,然則他們的接口描述不合。該場景盼望對辦事哀求進行中介,并拔取了SCA中介模塊來實現辦事哀求的路由、哀求消息轉換,面向辦事哀求客戶端樊籬中介細節,供給統一的辦事調用界面。并且,辦事哀求客戶端可以經由過程在Web辦事哀求的SOAP Header中嵌入路由信息,來標明每次哀求所盼望調用的遠程Web辦事。

該場景雖然只是一個技巧抽象,然則可以被付與多種IT內涵和營業語義,對照范例的有:

基于WS-Policy辦事非功能屬性的辦事匹配和拔取。在這種環境下,每個當拔取的Web辦事都經由過程WSDL綁定聲清楚明了不合的WS-Policy斷言。只有客戶端SOAP哀求中所攜帶的非功能性需求與當前辦事的WS-Policy斷言能力切合,該辦事才可以被匹配從而進行調用。而一樣平常環境下這種動態辦事拔取會將備選的Web辦事元數據(包括WSDL,XSD以及WS-Policy)宣布到一個元數據注冊中間(今朝IBM保舉的主流產品是WebSphere Registry & Repository),由哀求中介在運行時進行查詢匹配(WID V6.0.2已經有中介組件支持對WSRR的查詢)。已有的基于WS-Policy框架的辦事策略規范(如WS-RM, WS-Security等)都將每次辦事調用中的非功能需求嵌在SOAP Header中,在這種環境下,辦事中介必須實現基于SOAP Header的辦事匹配;

至此,兩個Echo Web辦事已經成功完成了在WESB辦事器中的安裝和啟動。

3.2 創建并設置設置設備擺設擺設SCA中介模塊

接下來必要創建一個SCA中介模塊來完成辦事路由。依照以下步驟進行:

選擇“File->New->Projects…->Mediation Module”,并在彈出的對話框中給定天生的中介模塊名稱為“EchoServiceRouter”。點擊“Finish”;

拷貝以上導入的兩個Web辦事的WSDL文件到該中介模塊工程中。詳細的做法是:在“J2EE” 視圖的“Project Explorer”子窗口中,選擇“EJB Projects->EchoEJB1->ejbModule->META- INFO->wsdl->EchoSvr1.wsdl”,右鍵點擊,選擇Copy。切換到“Business Integration”視圖,在“Business Integration”子窗口中選擇“EchoServiceRouter->Interfaces”,右鍵點擊并選擇Paste。Echo Web辦事1的WSDL被復制完畢。用同樣的法子拷貝獲得Echo Web辦事2的WSDL;

在 “EchoServiceRouter”工程下雙擊“Assembly Diagram”,打開該中介模塊的集成圖。重命名缺省天生的中介組件為“EchoServiceRouter”。右鍵點擊該組件,選擇 “Add->Interface->EchoSvr1”。這樣就把該中介模塊對外的辦事接口設為Echo Web辦事1的接口類型。因為Echo Web辦事2的接口類型與之不合,必要在編輯中介流程時對哀求消息做消息錢式轉換;

在集成圖空缺處點擊右鍵,選擇“Add->Import”,重命名天生的導入組件為“EchoService1Import”。用與上一步相同的法子設置該導入組件的接口為EchoSvr1。右鍵點擊該導入組件,選擇“Generate Binding…->Web Service Binding”,在彈出的窗口中選擇“Use an existing web service port”,并經由過程“Browse”按鈕選擇EchoSvr1 Web辦事端口。設置完畢后,選中“EchoService1Import”組件,它的Properties子窗口如圖2所示:

圖2 “EchoService1Import”導入組件的綁定設置設置設備擺設擺設

圖片看不清楚?請點擊這里查看原圖(大年夜圖)。

3.3 在SCA中和記娛樂和記怡情AG介模塊中實現中介和記娛樂和記怡情AG流

SCA中介模塊中,中介組件的實現為中介流。為第2節所述的場景實現中介流的步驟如下所示:

在集成圖中雙擊“EchoServiceRouter”組件,在彈出的對話框中選擇Yes;接著在彈出的“Generate Implementation”對話框中選擇OK,中介流編輯器被打開。對應于集成圖中的導入、導出組件的三個操作在編輯器的上部被顯示出來;

分手將左部EchoSvr1接口中的echo操作和右部EchoSvr1Partner接口中echo操作以及EchoSvr2Partner接口中的echoMessage操作連接起來;

現在可以在中介流編輯器的下部編輯中介流的詳細行徑了。在哀求中介流的選擇卡下,先拖拽一個“Message Filter”中介單元(Mediation Primitive)到編輯器中,它用于依據傳入到中介模塊的消息內容進行消息路由;再拖拽一個“XSL Transformation”中介單元到編輯器中,它用于轉換從中介模塊輸入的消息錢式到Echo Web辦事2可吸收的款式。著末拖拽兩個“Message Logger”中介單元到編輯器中,它們分手用于將送往Echo Web辦事1和Echo Web辦事2的SMO以XML款式寫入數據庫,作為日志;

右鍵點擊“Message Filter”中介單元,選擇“Add Output Terminal”,吸收彈出對話框的缺省設置;

如下圖所示將以上的中介單元連接起來形成哀求中介流:

圖5 “EchoServiceRouter”中介模塊的哀求中介流

選中“XSL Transformation”中介單元,在Properties子窗口紅選擇detail項,點擊“New…”按鈕。在彈出的“New XSLT Mapping”對話框中選擇“Message Root”為“/”,并點擊“Finish”以打開消息映射編輯器。如下圖對哀求消息錢式進行映射:

圖7 “XSL Transformation”中介單元在哀求中介流中的消息映射

圖片看不清楚?請點擊這里查看原圖(大年夜圖)。

保存并關閉該映射文件;

分手選中兩個“Message Logger”中介單元,在Properties子窗口紅選擇detail項,選擇“Root”為“/”。在中介流編輯器中進行保存,這樣就完成了全部哀求中介流的編輯(現在上面的紅叉將會消掉);

在中介流編輯器下部的相應中介流選擇頁面上,用類似的措施如下編輯相應中介流:

圖8 “EchoServiceRouter”中介模塊的相應中介流

圖片看不清楚?請點擊這里查看原圖(大年夜圖)。

此中“XSL Transformation”中介單元的消息映射如下所示:

圖9 “XSL Transformation”中介單元在相應中介流中的消息映射

public String echo(String msg) throws Exception {

...

SOAPMessage message = mf.createMessage();

SOAPPart soapPart = message.getSOAPPart();

SOAPEnvelope env = soapPart.getEnvelope();

//構造SOAP Body

SOAPBody body = env.getBody();

Name name = env.createName("echo", "q0", "http://ejbs");

SOAPBodyElement bodyElem = body.addBodyElement(name);

name = env.createName("message");

SOAPElement soapElem = bodyElem.addChildElement(name);

soapElem.addTextNode(msg);

//構造SOAP Header

SOAPHeader header = env.getHeader();

name = env.createName("routerCriterion", "exp",

"http://cn.ibm.com/example");

SOAPHeaderElement headerElem = header.addHeaderElement(name);

headerElem.addTextNode("GOLD");

message.saveChanges();

...

}

從以上片斷可以看出,該除了在SOAP消息中添加基礎的消息體用于表達哀求的操作和參數外,在SOAP Header中添加了一個名為“routerCriterion”,值為“GOLD”的Header項,這與SCA中介模塊哀求中介流中的消息過濾前提同等。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
20l8年二肖中特 正规的游戏赚钱平台 内蒙古11选5走势图一定牛 球盘体育比分 微乐麻将怀疑开挂怎么查 浙江快乐12选5开奖走势图 冠通游戏手机版下载 重庆时时彩官网 7m足球指数 大小球滚球牛人