(轉(zhuǎn))ofbiz服務(wù)引擎
介紹
--------------------------------------------------------------------------------
服務(wù)框架在2 版本對(duì)OFBiz不熟悉。 服務(wù)確定什么時(shí)候安置哪個(gè)的獨(dú)立邏輯一同能習(xí)慣于處理生意要求的很多不同的類型當(dāng)時(shí)。 服務(wù)能具有很多不同的類型: 工作流程,規(guī)章,爪哇,肥皂,BeanShell,等等 有類型爪哇的一種服務(wù)是很象它是一種靜態(tài)方法的一次事件, 但是用服務(wù)框架我們不對(duì)基于網(wǎng)的應(yīng)用限制。 服務(wù)要求輸入?yún)?shù)在一張地圖里,結(jié)果也被在一張地圖里返回。 因?yàn)橐粡埖貓D可以被連載并且儲(chǔ)存或者通過HTTP(肥皂)發(fā)生,這是好的。
服務(wù)被通過服務(wù)定義確定并且被分配到一臺(tái)具體的服務(wù)發(fā)動(dòng)機(jī)。 每臺(tái)服務(wù)發(fā)動(dòng)機(jī)都負(fù)責(zé)以適當(dāng)方式產(chǎn)生被確定的服務(wù)。 服務(wù)不給網(wǎng)基于什么時(shí)候不可能反應(yīng)物體可提供的這允許服務(wù)跑的應(yīng)用系。 這允許服務(wù)計(jì)劃在特定時(shí)間運(yùn)轉(zhuǎn)不露面通過工作調(diào)度程序運(yùn)轉(zhuǎn)。
服務(wù)有能力舉行其他服務(wù)。 因此,鏈接一大任務(wù)使重新使用現(xiàn)有服務(wù)非常容易的完成的小服務(wù)一同。 服務(wù), 被使用在里 不同應(yīng)用可以以創(chuàng)造全球服務(wù)定義文件或者服務(wù)僅限于應(yīng)用確定僅僅一次可以只給那應(yīng)用是限制和可提供的。
在網(wǎng)應(yīng)用程序服務(wù)里使用對(duì)網(wǎng)事件有貨,這允許事件保持小并且重新使用在服務(wù)框架過程中的現(xiàn)有的邏輯。 此外,服務(wù)可以作為哪個(gè)表明他們被允許被在聚會(huì)外邊進(jìn)入的'可輸出'被定義。 目前有允許服務(wù)被通過肥皂弄成可提供的一塊肥皂EventHandler。 遙遠(yuǎn)引用的其他形式將來可能被增加到框架。
--------------------------------------------------------------------------------
服務(wù)調(diào)度員
--------------------------------------------------------------------------------
服務(wù)調(diào)度員處理發(fā)送服務(wù)到它然后被產(chǎn)生的合適的服務(wù)發(fā)動(dòng)機(jī)。 有每名實(shí)體專員的正好一ServiceDispatcher。 有在一應(yīng)用內(nèi)的多專員如果那里將也多調(diào)度員。 ServiceDispatcher被通過LocalDispatcher 進(jìn)入。 可能有很多LocalDispatchers與ServiceDispatcher相關(guān)。 每LocalDispatcher被唯一命名并且包含它服務(wù)定義的自己的目錄。 當(dāng)造成LocalDispatcher的實(shí)例時(shí),DispatchContext也被建立并且傳給ServiceEngine。
LocalDispatcher與應(yīng)用有關(guān)。 應(yīng)用從未對(duì)ServiceDispatcher直接交談。 LocalDispatcher 包含產(chǎn)生服務(wù)的API,這被通過ServiceDispather安排。 但是, 應(yīng)用可以被逮捕比實(shí)際ServiceDispatcher 不同的線, 給LocalDispatcher離開保持在其他的事情中保持參考應(yīng)用classloader哪個(gè)的一DispatchContext。
--------------------------------------------------------------------------------
發(fā)送上下文
--------------------------------------------------------------------------------
當(dāng)例示時(shí)LocalDispatcher 建立DispatchContext。 這是運(yùn)行時(shí)間調(diào)度員上下文。 它包含必要信息為每名調(diào)度員處理服務(wù)。 這上下文包含參考每個(gè)服務(wù)定義文件, 應(yīng)該用于引用的classloader,提到專員和它的調(diào)度員跟一個(gè)確定的用戶的' 袋'一起歸因于。 這上下文轉(zhuǎn)交給什么時(shí)候產(chǎn)生的每服務(wù)并且被調(diào)度員使用確定服務(wù)的模特。
--------------------------------------------------------------------------------
ServiceEngine
--------------------------------------------------------------------------------
這是服務(wù)竟然被產(chǎn)生的地方。 每種服務(wù)讓人在它的定義方面說出一個(gè)發(fā)動(dòng)機(jī)名字。 當(dāng)被調(diào)用時(shí),這個(gè)發(fā)動(dòng)機(jī)名字被通過servicesengine.xml 文件制訂并且被GenericEngineFactory用具體事例說明。 當(dāng)被實(shí)現(xiàn)時(shí),第三者發(fā)動(dòng)機(jī)被支持并且必須跟隨GenericEngine接口。 在確定發(fā)動(dòng)機(jī)之后看服務(wù)發(fā)動(dòng)機(jī)構(gòu)造細(xì)節(jié)的指南。
處理兩個(gè)同步和asynchronous 服務(wù)的引用是發(fā)動(dòng)機(jī)的工作。 為asynchronous 服務(wù)使用工作調(diào)度程序的發(fā)動(dòng)機(jī)能延長(zhǎng)GenericAsyncEngine。
--------------------------------------------------------------------------------
工作調(diào)度程序
--------------------------------------------------------------------------------
被徹底檢查的工作調(diào)度程序現(xiàn)在被和服務(wù)框架結(jié)合起來。 這是最合適的調(diào)度程序的地方。 不可能是當(dāng)一個(gè)工作準(zhǔn)備運(yùn)轉(zhuǎn)時(shí),HttpServletRequest和HttpServletResponse 物體將是可得到的的保證, 和網(wǎng)控制人員結(jié)合起來沒有意義。 以及,當(dāng)被不對(duì)網(wǎng)環(huán)境限制時(shí),這個(gè)特征非常有用。
調(diào)度程序是有用于應(yīng)付/安排的工作并且分開用于每種服務(wù)的引用的線的一條單個(gè)的思路的一個(gè)multithreaded 零部件。 當(dāng)一個(gè)工作計(jì)劃運(yùn)轉(zhuǎn)時(shí),調(diào)度程序?qū)⒔信c工作相關(guān)的服務(wù)調(diào)度員在它自己的線里產(chǎn)生服務(wù)。 這將防止長(zhǎng)或者費(fèi)時(shí)的工作在隊(duì)伍里減速其他工作。
調(diào)度程序現(xiàn)在支持重現(xiàn)的iCalendar對(duì)象規(guī)則結(jié)構(gòu)。 工作不再被儲(chǔ)存在一個(gè)XML 文件里,每一個(gè)是ServiceDispatcher的一部分。 有一工作調(diào)度程序適合(哪個(gè)表明在那里也只一每GenericDelegator)的每ServiceDispatcher。
它怎樣工作:
最好用法調(diào)度程序的例子是一種asynchronous 服務(wù)叫。 當(dāng)一種asynchronous 服務(wù)被產(chǎn)生時(shí),它被傳給被排隊(duì)運(yùn)轉(zhuǎn)的工作調(diào)度程序。 一個(gè)重現(xiàn)入口是被建立的(RecurrenceInfo 和RecurrenceRule 實(shí)體被建立), 工作被儲(chǔ)存,(JobSandbox 實(shí)體被建立),和上下文(地圖)是被連載并且儲(chǔ)存的(RuntimeData 實(shí)體被創(chuàng)造)。 調(diào)度程序然后給調(diào)度作業(yè)(asynchronous 服務(wù)沒有任何延遲時(shí)間)的目錄的頂添加工作并且產(chǎn)生。
工作不再被在一個(gè)XML 文件里確定。 這已經(jīng)被移到JobSandbox 實(shí)體。 在為給隊(duì)伍添加被預(yù)先規(guī)定的工作計(jì)劃過程中,有一位基于網(wǎng)的客戶,但是目前實(shí)體必須被親手建立。
--------------------------------------------------------------------------------
服務(wù)定義
--------------------------------------------------------------------------------
服務(wù)被把定義為在使用中的定義文件。 有全球定義文件用于全部服務(wù)調(diào)度程序和被只地與一名單個(gè)的調(diào)度員聯(lián)系起來的個(gè)人檔案。 當(dāng)LocalDispatcher被建立時(shí),它被遞給一次指向這些定義文件的Arils的收集。 這些文件被使用XML 創(chuàng)作并且確定需要產(chǎn)生一種服務(wù)的必要信息。 這個(gè)文件的DTD在這里可能被發(fā)現(xiàn)。
服務(wù)被一個(gè)獨(dú)特的名字定義,對(duì)一臺(tái)具體的服務(wù)發(fā)動(dòng)機(jī)聯(lián)系,輸入和輸出參數(shù)被明確地確定。 在下面是一個(gè)服務(wù)定義的例子:
< 服務(wù)名字="userLogin"發(fā)動(dòng)機(jī)="java"位置="org.ofbiz.commonapp.security.login.LoginServices"產(chǎn)生="userLogin"><描述>證實(shí)用戶名/ 密碼; 創(chuàng)造UserLogin目標(biāo)</描述><把名字歸于="login.username"類型="線"方式="在方面"/><名字=,把歸于 "login.password"類型="線"方式="在方面"/><把名字="userLogin"類型="org.ofbiz.entity.GenericValue"方式=歸于"在外
名字 - 服務(wù)的獨(dú)特的名字
發(fā)動(dòng)機(jī) - 發(fā)動(dòng)機(jī)的名字(在servicesengine.xml里定義)
位置 - 服務(wù)級(jí)別的位置或者包
產(chǎn)生 - 服務(wù)的方法名字
auth - 做這服務(wù)要求授權(quán)(真實(shí)/錯(cuò)誤)
出口 - 這種服務(wù)被允許被通過肥皂/ HTTP / JMS(真實(shí)/錯(cuò)誤)進(jìn)入
批準(zhǔn) - 我們批準(zhǔn)為名字和類型(匹配(真實(shí)/錯(cuò)誤))發(fā)現(xiàn)下面的屬性
實(shí)現(xiàn)要素:
服務(wù) - 這種服務(wù)實(shí)現(xiàn)的服務(wù)的名字。 全部屬性被繼承
歸因于要素:
名字 - 這個(gè)屬性的名字
打字 - 實(shí)體類型(線,java.util.Date,等等)
方式 - 作這輸入或者產(chǎn)量參數(shù)或者都(穿/在外/INOUT)
可選擇 - 是這個(gè)參數(shù)可選擇的(真實(shí)/錯(cuò)誤)
*強(qiáng)調(diào)價(jià)值是默認(rèn)
在你上方能看見這種服務(wù)的名字是userLogin,它使用java 發(fā)動(dòng)機(jī)。 這種服務(wù)期望用參數(shù)需要的兩: login.username和login.password。 在服務(wù)被產(chǎn)生之前,要求的參數(shù)被測(cè)試。 參數(shù)不匹配用名字如果和服務(wù)沒被產(chǎn)生的實(shí)體類型。 可以或可以不被寄給到服務(wù)的參數(shù)應(yīng)該被定義為可選擇。 以后那些服務(wù)被產(chǎn)生,出于參數(shù)被測(cè)試。 只要求參數(shù)測(cè)試,但是,遞給哪個(gè)不確定當(dāng)可選擇和要求將引起服務(wù)失敗時(shí)如果。 這種服務(wù)不出于參數(shù)需要,因此結(jié)果僅僅被返回。
--------------------------------------------------------------------------------
用法
--------------------------------------------------------------------------------
服務(wù)框架的內(nèi)部的用法十分簡(jiǎn)單。 在Web 應(yīng)用里L(fēng)ocalDispatcher被儲(chǔ)存在可以被在一次事件過程中通過會(huì)議對(duì)象訪問的ServletContext里。 對(duì)于非網(wǎng)來說基于應(yīng)用,你僅僅建立GenericDispatcher:
GenericDelegator專員 = GenericDelegator.getGenericDelegator("默認(rèn)"); LocalDispatcher調(diào)度員 = 新GenericDispatcher("UniqueName",專員); 現(xiàn)在我們有我們能使用產(chǎn)生服務(wù)的一名調(diào)度員。 為了產(chǎn)生試驗(yàn),服務(wù)建立包含時(shí)髦的參數(shù)消息的上下文的一張地圖然后產(chǎn)生服務(wù):
地圖上下文 = UtilMisc.toMap("消息","這是一次試驗(yàn)。 "); 地圖結(jié)果 = 空行; 試驗(yàn) {結(jié)果 = dispatcher.runSync("testScv",上下文); }抓住(GenericServiceException e) {e.printStackTrace(); }如果(結(jié)果!= 空行)System.out.println("起因于軍用": +(線)result.get("resp")); 現(xiàn)在看操縱臺(tái)并且看見試驗(yàn)服務(wù)已經(jīng)回響什么。
***試驗(yàn)服務(wù)位于核心/ 文件/例子/ ServiceTest.java 你必須編輯這并且把它放在classpath里。
計(jì)劃一種服務(wù)最后運(yùn)轉(zhuǎn)或者重復(fù)使用這:
//這個(gè)例子將計(jì)劃一個(gè)工作運(yùn)轉(zhuǎn)now.Map 上下文 = UtilMisc.toMap("消息","這是一次試驗(yàn)。 "); 試驗(yàn) {長(zhǎng)的startTime = (新日期()).getTime(); dispatcher.schedule("testScv",上下文,startTime); }抓住(GenericServiceException e) {e.printStackTrace(); }//這個(gè)例子將計(jì)劃一種服務(wù)現(xiàn)在運(yùn)轉(zhuǎn)并且每5秒共10 times.Map 上下文重復(fù)一次 = UtilMisc.toMap("消息","這是一次試驗(yàn)。 "); 試驗(yàn) {長(zhǎng)的startTime = (新日期()).getTime(); 內(nèi)部的頻率 = RecurrenceRule.SECONDLY; 內(nèi)部的間隔= 5; 內(nèi)部的計(jì)數(shù)= 10; dispatcher.schedule("testScv",上下文,startTime,頻率,間隔,數(shù)); }抓住(GenericServiceException e) {e.printStackTrace(); }
--------------------------------------------------------------------------------
高級(jí)
--------------------------------------------------------------------------------
有許多'發(fā)展'的特征被增加服務(wù)發(fā)動(dòng)機(jī)。 你將關(guān)于每下面找到例子,定義和信息。
--------------------------------------------------------------------------------
接口
--------------------------------------------------------------------------------
接口服務(wù)發(fā)動(dòng)機(jī)實(shí)現(xiàn)幫助確定分享許多相同的參數(shù)的服務(wù)。 一種接口服務(wù)不能被產(chǎn)生,而是是其他服務(wù)從繼承的一種確定的服務(wù)。 每種接口服務(wù)將被使用接口發(fā)動(dòng)機(jī),例如確定:
<服務(wù)名字="testInterface"發(fā)動(dòng)機(jī)="接口"位置=""產(chǎn)生=""><描述>考試接口服務(wù)</描述 ><把名字="partyId"類型="線"方式=歸于"在方面"/><名字="partyTypeId"類型="線,把歸于 "方式="on"/><"在外"把名字歸于="userLoginId"類型="org.ofbiz.entity.GenericValue"方式="真實(shí)"的可選擇= / **注意到位置和產(chǎn)生領(lǐng)域被在DTD里要求,因此當(dāng)作為一個(gè)接口使用時(shí),我們僅僅留下這些作為空的線。
既然我們有一個(gè)接口我們需要確定實(shí)現(xiàn)這個(gè)接口的一種服務(wù)
<服務(wù)名字="testExample1"發(fā)動(dòng)機(jī)="簡(jiǎn)單"位置="組織/ ofbiz / commonapp /普通/SomeTestFile.xml"產(chǎn)生="testExample1" ><描述>考試服務(wù)實(shí)現(xiàn)testInterface</描述><實(shí)現(xiàn)服務(wù)="testInterface"/></服務(wù)>這testExample1 服務(wù)將 實(shí)現(xiàn)testInterface的任何服務(wù)也將繼承參數(shù)/把歸于。 如果需要,另外屬性能被增加到一具體服務(wù)在包括時(shí)屬性跟著工具標(biāo)簽。 你可能也通過在工具標(biāo)簽之后重新確定它推翻一個(gè)屬性。
--------------------------------------------------------------------------------
ECAs
--------------------------------------------------------------------------------
ECA(事件狀態(tài)行動(dòng))是很象一個(gè)扳機(jī)。 當(dāng)一種服務(wù)被叫時(shí),查找被進(jìn)行看看是否任何ECAs被為這次事件確定。 事件在驗(yàn)證之前包括, 在參數(shù)生效,在真實(shí)服務(wù)引用之前,出于參數(shù)生效,交易犯,或者在接發(fā)球之前。 下一每狀態(tài)在ECA定義內(nèi)評(píng)價(jià)和全部回來為真實(shí)如果,每行動(dòng)執(zhí)行。 一次行動(dòng)只是必須被確定在服務(wù)的上下文里已經(jīng)與參數(shù)合作的一種服務(wù)。 沒有對(duì)每ECA 可以確定的條件或者行動(dòng)的數(shù)量的限制。
<服務(wù)eca><eca 服務(wù)="testScv"事件="犯"><狀態(tài)字段名="消息"操作者="等于"估價(jià)="
要求的屬性名字嗎? 描述
服務(wù)Y 服務(wù)這ECA的名字附在上。
事件Y這ECA 將跑的事件可能是(以前): auth,在方面批準(zhǔn),在外批準(zhǔn),產(chǎn)生,承諾,或者返回。
在上運(yùn)行錯(cuò)誤N 跑的這ECA在這服務(wù)(錯(cuò)誤的拖欠)內(nèi)錯(cuò)誤
eca 要素也應(yīng)該有0種或更多條件或者條件字段要素和1種或更多行動(dòng)要素。
狀態(tài)標(biāo)簽
要求的屬性名字嗎? 描述
地圖名字N 包含批準(zhǔn)的領(lǐng)域?qū)碜缘牡貓D的服務(wù)上下文領(lǐng)域的名字。 如果不確切說明字段名將被看作服務(wù)上下文字段名(一個(gè)env名字)。
字段名Y 將被比較的地圖領(lǐng)域的名字。
操作者Y確切說明比較運(yùn)算符一定是如下內(nèi)容之一: 較少,更偉大,較少同等的人,偉大同等的人,等于,不等于,或者包含。
價(jià)值Y那些價(jià)值那些領(lǐng)域?qū)⒈茸鳌?一定是一根線,但是可能變?yōu)槠渌愋汀?
打字N要適合比較使用的數(shù)據(jù)類型。 一定是如下內(nèi)容之一: 線,使加倍,漂浮,朗,整數(shù),日期,時(shí)間,或者用時(shí)間標(biāo)明。 如果沒有類型被指定,默認(rèn)將是線。
什么時(shí)候把線對(duì)象轉(zhuǎn)化成其他數(shù)據(jù)類型,日期,次的主要的使用的形式N一形式specifier 和用時(shí)間標(biāo)明。
條件字段標(biāo)簽
要求的屬性名字嗎? 描述
地圖名字N 包含批準(zhǔn)的領(lǐng)域?qū)碜缘牡貓D的服務(wù)上下文領(lǐng)域的名字。 如果不確切說明字段名將被看作方法環(huán)境字段名(一個(gè)env名字)。
字段名Y 將被比較的地圖領(lǐng)域的名字。
操作者Y確切說明比較運(yùn)算符一定是如下內(nèi)容之一: 較少,更偉大,較少同等的人,偉大同等的人,等于,不等于,或者包含。
對(duì)制訂名字的N 包含被比較的領(lǐng)域?qū)碜缘牡貓D的服務(wù)上下文領(lǐng)域的名字。 如果離開空將給地圖名字,或者方法環(huán)境拖欠地圖名字也未指定。
在字段名N這個(gè)名字制訂領(lǐng)域這主要領(lǐng)域?qū)⒈槐茸鞯哪莻€(gè)。 如果離開空將給字段名拖欠。
打字N要適合比較使用的數(shù)據(jù)類型。 一定是如下內(nèi)容之一: 線,使加倍,漂浮,朗,整數(shù),日期,時(shí)間,或者用時(shí)間標(biāo)明。 如果沒有類型被指定,默認(rèn)將是線。
什么時(shí)候把線對(duì)象轉(zhuǎn)化成其他數(shù)據(jù)類型,日期,次的主要的使用的形式N一形式specifier 和用時(shí)間標(biāo)明。
行動(dòng)標(biāo)簽
要求的屬性名字嗎? 描述
服務(wù)這次行動(dòng)的名字將產(chǎn)生的服務(wù)N。
方式Y(jié)這種服務(wù)被產(chǎn)生的這種方式。 可能是同步或者async。 注意到async 行動(dòng)不將不斷改進(jìn)即使當(dāng)譜成真實(shí)的時(shí)候的上下文。
如果行動(dòng)服務(wù)的結(jié)果不斷改進(jìn)主要服務(wù)的上下文,結(jié)果對(duì)上下文的N。 準(zhǔn)確不履行。
忽視錯(cuò)誤的N 忽視行動(dòng)服務(wù)引起的任何錯(cuò)誤。 如果真實(shí)錯(cuò)誤將引起原先的服務(wù)失敗。 準(zhǔn)確不履行。
堅(jiān)持說N 行動(dòng)服務(wù)商店/ 跑。 可能是真實(shí)或者錯(cuò)誤的。 方式是async 只有效。 拖欠錯(cuò)誤。
--------------------------------------------------------------------------------
服務(wù)組
--------------------------------------------------------------------------------
當(dāng)舉行最初服務(wù)時(shí),服務(wù)組是應(yīng)該運(yùn)轉(zhuǎn)的一套服務(wù)。 你確定一服務(wù)使用組服務(wù)發(fā)動(dòng)機(jī),并且包括的全部參數(shù)/把適合的全部服務(wù)在組內(nèi)需要?dú)w于。 那些位置把歸于不已經(jīng)數(shù)組需要服務(wù),產(chǎn)生把歸于確定名字的要跑的那些組。 什么時(shí)候這幾次服務(wù)產(chǎn)生那些組被叫和那些服務(wù)在那些組內(nèi)確定被象確定的那樣叫。
組定義非常簡(jiǎn)單,它跟1種或更多服務(wù)要素一起包含一種組元素。 組元素包含一名字把歸于和一方式把習(xí)慣于確定組將怎樣起作用歸于。 服務(wù)要素是很象在ECA里的行動(dòng)要素,差別是結(jié)果對(duì)上下文的默認(rèn)價(jià)值。
<服務(wù)組><組名="testGroup"寄給方式="全部"><服務(wù)名字="testScv"方式= "同步"/><服務(wù)名字="testBsh"方式="同步"/></組></服務(wù)組>標(biāo)簽組
要求的屬性名字嗎? 描述
名字Y這次行動(dòng)將產(chǎn)生的服務(wù)的名字。
送方式的N 服務(wù)(s)應(yīng)該被產(chǎn)生的這種方式。 選擇是: 沒有一個(gè),全部,首先可提供,隨便,或者循環(huán)賽。 默認(rèn)是全部。
服務(wù)標(biāo)簽
要求的屬性名字嗎? 描述
服務(wù)這次行動(dòng)的名字將產(chǎn)生的服務(wù)N。
方式Y(jié)這種服務(wù)被產(chǎn)生的這種方式。 可能是同步或者async。 注意到async 行動(dòng)不將不斷改進(jìn)即使當(dāng)譜成真實(shí)的時(shí)候的上下文。
如果行動(dòng)服務(wù)的結(jié)果不斷改進(jìn)主要服務(wù)的上下文,結(jié)果對(duì)上下文的N。 拖欠錯(cuò)誤。
--------------------------------------------------------------------------------
路線服務(wù)
--------------------------------------------------------------------------------
路線服務(wù)被使用路線服務(wù)發(fā)動(dòng)機(jī)確定。 一路線服務(wù)叫什么時(shí)候,沒有產(chǎn)生執(zhí)行,全部ECAs 確定將在適當(dāng)?shù)氖录陂g跑。 這類服務(wù)沒被經(jīng)常使用, 但是能通過利用對(duì)服務(wù)可提供的ECA 選擇對(duì)其他服務(wù)習(xí)慣于' 路線'。
--------------------------------------------------------------------------------
HTTP 服務(wù)
--------------------------------------------------------------------------------
使用HTTP 服務(wù)是在其他系統(tǒng)上確定的一種產(chǎn)生的遙遠(yuǎn)服務(wù)的方式。 本地定義應(yīng)該與遙遠(yuǎn)定義的相配, 但是使用的發(fā)動(dòng)機(jī)應(yīng)該是http, 位置應(yīng)該是在遠(yuǎn)程系統(tǒng)上運(yùn)行的httpService 事件的完全合格的URL, 并且產(chǎn)生能是這個(gè)名字是那些服務(wù)的在你請(qǐng)求被跑的這個(gè)遠(yuǎn)程系統(tǒng)上。 遠(yuǎn)程系統(tǒng)必須讓人發(fā)起httpService 事件讓HTTP 服務(wù)被接受。 因?qū)Ψ轿闯鰣?chǎng),commonapp 網(wǎng)應(yīng)用有這事件爬上得到要求服務(wù)。 為了允許服務(wù)被運(yùn)轉(zhuǎn)遙遠(yuǎn)服務(wù)在遠(yuǎn)程系統(tǒng)上必須有出口譜成真實(shí)。 HTTP 服務(wù)天生同步。
--------------------------------------------------------------------------------
JMS 服務(wù)
--------------------------------------------------------------------------------
JMS 服務(wù)是很象HTTP 服務(wù),除服務(wù)請(qǐng)求之外被寄給到一個(gè)JMS 題目/排隊(duì)。 發(fā)動(dòng)機(jī)應(yīng)該被調(diào)整到j(luò)ms, 位置應(yīng)該在serviceengine.xml(服役配置資料)的文件內(nèi)確定的jms 服務(wù)的名字, 并且產(chǎn)生能是這個(gè)名字是那些服務(wù)的在你請(qǐng)求跑的這個(gè)遠(yuǎn)程系統(tǒng)上。 JMS 服務(wù)天生是asynchronous。
--------------------------------------------------------------------------------
posted on 2007-07-23 01:37 hugh 閱讀(1295) 評(píng)論(2) 編輯 收藏 所屬分類: JAVA