欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種j2ee架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng)的制作方法

文檔序號(hào):7987218閱讀:245來(lái)源:國(guó)知局
一種j2ee架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng)的制作方法【專利摘要】本發(fā)明公開了一種J2EE架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng),涉及通信【
技術(shù)領(lǐng)域
】,解決現(xiàn)有技術(shù)中J2EE架構(gòu)下業(yè)務(wù)處理請(qǐng)求異常時(shí)容易積壓在WEB層或EJB層的技術(shù)問題。其中,該方法包括:EJB服務(wù)器接收到來(lái)自WEB服務(wù)器的業(yè)務(wù)請(qǐng)求和預(yù)設(shè)的執(zhí)行時(shí)間,并為業(yè)務(wù)請(qǐng)求分配控制業(yè)務(wù)請(qǐng)求的EJB容器線程;EJB容器線程創(chuàng)建執(zhí)行業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,EJB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為預(yù)設(shè)的執(zhí)行時(shí)間的限制;EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送業(yè)務(wù)請(qǐng)求繼續(xù)處理;如果EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求,并等待數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間超過預(yù)設(shè)的執(zhí)行時(shí)間,則EJB執(zhí)行線程向數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止業(yè)務(wù)請(qǐng)求的執(zhí)行;數(shù)據(jù)庫(kù)接收到該取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理,并回滾?!緦@f(shuō)明】—種J2EE架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng)【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及通信【
技術(shù)領(lǐng)域
】,特別涉及一種J2EE架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng)?!?br>背景技術(shù)
】[0002]J2EE(Java2EnterpriseEdition,Java2企業(yè)版)體系架構(gòu)由于其可移植性強(qiáng)、可重用性好以及互操作性強(qiáng)等優(yōu)點(diǎn),成為IT系統(tǒng)中普通采用的架構(gòu)。而基于J2EE架構(gòu)實(shí)現(xiàn)的中間件服務(wù)器也大量涌現(xiàn),比較有名的有IBM的WebSphere,Oracle的Weblogic等,在普遍采用的展現(xiàn)層(WEB)、應(yīng)用層(EJB)、數(shù)據(jù)庫(kù)層(Database)三層架構(gòu)中他們都發(fā)揮著各自的重要角色。[0003]遵循該J2EE架構(gòu)的系統(tǒng)中,如CRM(CustomerRelationshipManagement,客戶關(guān)系管理)),在數(shù)據(jù)庫(kù)層某些表執(zhí)行慢或是應(yīng)用層某些業(yè)務(wù)的應(yīng)用程序故障的時(shí)候,用戶或營(yíng)業(yè)員在辦理相關(guān)的業(yè)務(wù)時(shí),出現(xiàn)系統(tǒng)白屏死機(jī),無(wú)法繼續(xù)后續(xù)業(yè)務(wù)。例如客服人員在按客戶的要求查詢某業(yè)務(wù)時(shí),因?yàn)樵摌I(yè)務(wù)的應(yīng)用程序出現(xiàn)異常,造成前臺(tái)界面出現(xiàn)長(zhǎng)時(shí)間白屏現(xiàn)象,導(dǎo)致客戶長(zhǎng)時(shí)間等待或是必須關(guān)閉應(yīng)用重新登錄導(dǎo)致話務(wù)中斷;再例如某個(gè)應(yīng)用程序出現(xiàn)異常,而運(yùn)維人員無(wú)法及時(shí)獲得故障告警信息,導(dǎo)致大量請(qǐng)求積壓在中間件或數(shù)據(jù)庫(kù)端,最終導(dǎo)致整個(gè)系統(tǒng)崩潰,無(wú)法繼續(xù)工作。因而必須解決在部分服務(wù)出現(xiàn)響應(yīng)慢、故障的情況下,系統(tǒng)不會(huì)白屏死機(jī),用戶和營(yíng)業(yè)員可以辦理其他正常業(yè)務(wù)。為了解決以上問題,現(xiàn)有技術(shù)通常會(huì)有如下2個(gè)方案:1)中間件平臺(tái)提供調(diào)用超時(shí)控制機(jī)制,如OracleWebLogic平臺(tái)提供的RMI調(diào)用超時(shí)時(shí)間設(shè)置,來(lái)控制WEB層到應(yīng)用層調(diào)用的超時(shí)時(shí)間,防止用戶界面出現(xiàn)白屏死機(jī)故障。2)在WEB層到應(yīng)用層的調(diào)用采用異步提交模式,即用戶提交請(qǐng)求后,馬上返回,而不需要等待后臺(tái)處理完畢,用戶界面不會(huì)出現(xiàn)白屏死機(jī)故障。[0004]但是,現(xiàn)有技術(shù)的方案仍舊存在如下技術(shù)問題:[0005]方案I):該方法在后臺(tái)服務(wù)故障的情況下,雖然WEB層對(duì)業(yè)務(wù)的調(diào)用能夠在設(shè)定的時(shí)間內(nèi)返回,避免用戶長(zhǎng)時(shí)間等待、白屏死機(jī)等問題,但沒有解決應(yīng)用層、數(shù)據(jù)庫(kù)層存在的本質(zhì)問題,系統(tǒng)無(wú)法恢復(fù)正常,致大量請(qǐng)求積壓在應(yīng)用層或數(shù)據(jù)庫(kù)層,容易導(dǎo)致整個(gè)系統(tǒng)崩潰。方案2):異步提交方法不需要后臺(tái)服務(wù)處理完成就馬上返回,雖然不會(huì)造成系統(tǒng)等待和白屏,但是同樣沒有解決應(yīng)用層、數(shù)據(jù)庫(kù)層存在的本質(zhì)問題,系統(tǒng)無(wú)法恢復(fù)正常,致大量請(qǐng)求積壓在應(yīng)用層或數(shù)據(jù)庫(kù)層,最終導(dǎo)致整個(gè)系統(tǒng)崩潰?!?br/>發(fā)明內(nèi)容】[0006]為了解決現(xiàn)有技術(shù)中J2EE構(gòu)建下的系統(tǒng)故障時(shí),無(wú)法解決發(fā)生在應(yīng)用層和數(shù)據(jù)庫(kù)層存在的本質(zhì)問題,導(dǎo)致大量請(qǐng)求積壓在應(yīng)用層或數(shù)據(jù)庫(kù)層的技術(shù)問題,本發(fā)明提出一種J2EE架構(gòu)下業(yè)務(wù)的處理方法及系統(tǒng)。[0007]一種J2EE架構(gòu)下業(yè)務(wù)的處理方法,包括:[0008]應(yīng)用層EJB服務(wù)器接收到來(lái)自展現(xiàn)層WEB服務(wù)器的業(yè)務(wù)請(qǐng)求和預(yù)設(shè)的執(zhí)行時(shí)間,并為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的EJB容器線程;[0009]EJB容器線程創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,所述EJB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;[0010]所述EJB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送所述業(yè)務(wù)請(qǐng)求繼續(xù)處理;[0011]如果所述EJB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,并等待所述數(shù)據(jù)庫(kù)處理所述業(yè)務(wù)請(qǐng)求的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則所述EJB執(zhí)行線程向所述數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行;[0012]所述數(shù)據(jù)庫(kù)接收到該取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理,并回滾。[0013]一種J2EE架構(gòu)下業(yè)務(wù)的處理系統(tǒng),包括:WEB容器裝置及EJB容器裝置;[0014]其中,所述WEB容器裝置包括:[0015]WEB容器池模塊,用于接收到客戶端發(fā)送來(lái)的業(yè)務(wù)請(qǐng)求后,為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的WEB容器線程;[0016]WEB容器線程,用于獲取用戶為所述業(yè)務(wù)請(qǐng)求預(yù)設(shè)的執(zhí)行時(shí)間,并創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的WEB執(zhí)行線程,所述WEB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;[0017]WEB執(zhí)行線程,用于執(zhí)行所述業(yè)務(wù)請(qǐng)求,調(diào)用EJB服務(wù)器的應(yīng)用程序繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求,以及將所述預(yù)設(shè)的執(zhí)行時(shí)間傳遞到所述EJB服務(wù)器;如果執(zhí)行所述業(yè)務(wù)請(qǐng)求,并調(diào)用EJB服務(wù)器的應(yīng)用程序的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則中止所述調(diào)用;否則由EJB服務(wù)器繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求;[0018]其中,所述EJB容器裝置包括:[0019]EJB容器池模塊,用于接收WEB執(zhí)行線程發(fā)送而來(lái)的所述業(yè)務(wù)請(qǐng)求,并為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的EJB容器線程;[0020]EJB容器線程,用于創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,所述EJB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;[0021]EJB執(zhí)行線程,用于執(zhí)行所述業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送所述業(yè)務(wù)請(qǐng)求繼續(xù)處理;如果執(zhí)行所述業(yè)務(wù)請(qǐng)求,并等待所述數(shù)據(jù)庫(kù)處理所述業(yè)務(wù)請(qǐng)求的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則向所述數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行。[0022]本實(shí)施例提供的方案通過采用將容器線程和執(zhí)行線程分離,并預(yù)設(shè)執(zhí)行時(shí)間的技術(shù)手段,實(shí)現(xiàn)了可精確的控制了整個(gè)業(yè)務(wù)請(qǐng)求在WEB服務(wù)器、EJB服務(wù)器和數(shù)據(jù)庫(kù)的執(zhí)行時(shí)間,取得了系統(tǒng)故障情況時(shí)的自我保護(hù)和自我恢復(fù)功能,因此不會(huì)再應(yīng)用層和數(shù)據(jù)庫(kù)層產(chǎn)生請(qǐng)求積壓。并且,不管是WEB服務(wù)器(代表展現(xiàn)層)上、EJB服務(wù)器(代表應(yīng)用層)還是數(shù)據(jù)庫(kù)上,局部的故障不會(huì)擴(kuò)散,?!緦@綀D】【附圖說(shuō)明】[0023]附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:[0024]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0025]圖1為本發(fā)明實(shí)施例1中提供的一種J2EE架構(gòu)下業(yè)務(wù)的處理方法的應(yīng)用場(chǎng)景示意圖;[0026]圖2為本發(fā)明實(shí)施例1中提供的一種J2EE架構(gòu)下業(yè)務(wù)的處理方法的流程示意圖;[0027]圖3為本發(fā)明實(shí)施例1中提供的一種J2EE架構(gòu)下業(yè)務(wù)的處理方法的一種實(shí)現(xiàn)效果示意圖;[0028]圖4為本發(fā)明實(shí)施例1中提供的一種J2EE架構(gòu)下業(yè)務(wù)的處理方法的另一種實(shí)現(xiàn)效果不意圖;[0029]圖5為本發(fā)明實(shí)施例2中提供的一種J2EE架構(gòu)下業(yè)務(wù)的處理系統(tǒng)的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】[0030]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。并且,以下各實(shí)施例均為本發(fā)明的可選方案,實(shí)施例的排列順序及實(shí)施例的編號(hào)與其優(yōu)選執(zhí)行的順序無(wú)關(guān)。[0031]實(shí)施例1[0032]本實(shí)施例提供一種J2EE架構(gòu)下業(yè)務(wù)的處理方法,該方法中引入執(zhí)行線程,將現(xiàn)有技術(shù)中對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行處理的容器線程功能替換為由容器線程和執(zhí)行線程組合完成。其中,容器線程用于控制業(yè)務(wù);執(zhí)行線程用于處理業(yè)務(wù)請(qǐng)求的業(yè)務(wù)邏輯,即用來(lái)真正的處理該業(yè)務(wù)請(qǐng)求的具體事務(wù)。容器線程是J2EE服務(wù)器(如WEB服務(wù)器或EJB服務(wù)器)創(chuàng)建和管理的線程,不能由開發(fā)人員控制,通過自創(chuàng)建的執(zhí)行線程的引入來(lái)達(dá)到可控的目的。容器線程對(duì)于接收到的業(yè)務(wù)請(qǐng)求,將創(chuàng)建執(zhí)行線程來(lái)處理該業(yè)務(wù)請(qǐng)求的具體事務(wù)。更特別地,本實(shí)施例還預(yù)設(shè)了每個(gè)業(yè)務(wù)被允許處理的執(zhí)行時(shí)間SLA_TimeOut,那么相應(yīng)地,容器線程在創(chuàng)建執(zhí)行線程時(shí)也會(huì)將該執(zhí)行時(shí)間告知執(zhí)行線程,以便執(zhí)行線程可以在執(zhí)行時(shí)間到達(dá),但仍未完成業(yè)務(wù)請(qǐng)求的具體事務(wù)時(shí),進(jìn)行中止,不再繼續(xù)執(zhí)行。[0033]具體而言,參照?qǐng)D1所示的J2EE架構(gòu)下的場(chǎng)景示意圖,優(yōu)選方案中,在本實(shí)施例執(zhí)行前,管理員可通過管理配置平臺(tái)預(yù)先配置每個(gè)業(yè)務(wù)請(qǐng)求允許被應(yīng)用程序執(zhí)行的時(shí)間,即執(zhí)行時(shí)間(SLA_TimeOut),然后由該管理配置平臺(tái)將該SLA_TimeOut發(fā)送到WEB服務(wù)器或EJB服務(wù)器。雖然可以對(duì)同一業(yè)務(wù)分別針對(duì)展現(xiàn)層WEB服務(wù)器和應(yīng)用層EJB服務(wù)器預(yù)設(shè)不同的執(zhí)行時(shí)間,但是為了簡(jiǎn)便起見,本實(shí)施例中,無(wú)論是在WEB服務(wù)器還是EJB服務(wù)器執(zhí)行時(shí)間相同,并且采用由WEB服務(wù)器將執(zhí)行時(shí)間傳遞到EJB服務(wù)器的方式,使EJB服務(wù)器獲取到該執(zhí)行時(shí)間。[0034]如圖2所示,該方法包括:[0035]步驟101,客戶端發(fā)送業(yè)務(wù)請(qǐng)求到WEB服務(wù)器;[0036]步驟102,WEB服務(wù)器接收客戶端發(fā)送來(lái)的業(yè)務(wù)請(qǐng)求后,從WEB容器線程池中為該業(yè)務(wù)請(qǐng)求分配控制業(yè)務(wù)請(qǐng)求的WEB容器線程;[0037]步驟103,WEB容器線程獲取管理員為業(yè)務(wù)請(qǐng)求預(yù)設(shè)的執(zhí)行時(shí)間SLA_TimeOut,并創(chuàng)建執(zhí)行業(yè)務(wù)請(qǐng)求的WEB執(zhí)行線程,WEB執(zhí)行線程被設(shè)置了可允許執(zhí)行的時(shí)限,該時(shí)限為SLA—TimeOut;[0038]本步驟中可以使用JAVA開發(fā)工具JDK的FutureTask模式創(chuàng)建作為異步任務(wù)的WEB執(zhí)行線程(ExecutableThread),該線程真正的處理該業(yè)務(wù)請(qǐng)求,并且當(dāng)WEB容器線程需要時(shí)可以通過WEB執(zhí)行線程獲取執(zhí)行線程已經(jīng)處理完的業(yè)務(wù)請(qǐng)求。創(chuàng)建該WEB執(zhí)行線程時(shí),WEB容器線程也會(huì)將該SLA_TimeOut告訴WEB執(zhí)行線程,以便WEB執(zhí)行線程在處理業(yè)務(wù)請(qǐng)求的過程中,實(shí)時(shí)監(jiān)控自己的執(zhí)行時(shí)間。[0039]步驟104,WEB執(zhí)行線程按照正常的過程執(zhí)行業(yè)務(wù)請(qǐng)求,并在處理完在WEB服務(wù)器處該業(yè)務(wù)請(qǐng)求應(yīng)該被執(zhí)行的任務(wù)后,調(diào)用EJB服務(wù)器的應(yīng)用程序繼續(xù)執(zhí)行業(yè)務(wù)請(qǐng)求(處理該業(yè)務(wù)請(qǐng)求應(yīng)該是什么應(yīng)用程序就調(diào)用什么應(yīng)用程序,這部分與現(xiàn)有技術(shù)一樣,在此不贅述,實(shí)際上調(diào)用EJB服務(wù)器應(yīng)用程序繼續(xù)執(zhí)行業(yè)務(wù)請(qǐng)求也就是將該業(yè)務(wù)請(qǐng)求繼續(xù)發(fā)送到EJB服務(wù)器的相應(yīng)接口),同時(shí)將SLA_TimeOut傳遞到EJB服務(wù)器。在上述過程中,如果WEB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求,并調(diào)用EJB服務(wù)器的應(yīng)用程序的時(shí)間超過SLA_TimeOut,則執(zhí)行步驟105;否則由EJB服務(wù)器繼續(xù)執(zhí)行業(yè)務(wù)請(qǐng)求,執(zhí)行步驟106,[0040]步驟105,WEB執(zhí)行線程中止執(zhí)行;[0041]優(yōu)選方案中,該步驟105還可包括WEB容器線程返回客戶端系統(tǒng)繁忙信息,并發(fā)送告警到管理配置平臺(tái)。管理配置平臺(tái)可將告警發(fā)送到告警系統(tǒng),通知運(yùn)維人員進(jìn)行處理,后繼結(jié)束本流程。[0042]由于WEB容器線程用于控制業(yè)務(wù)請(qǐng)求的處理,且該WEB執(zhí)行線程是有WEB容器線程創(chuàng)建的,因此,如果WEB執(zhí)行線程中止操作,WEB容器線程可立即監(jiān)控到這一行為。[0043]步驟106,EJB服務(wù)器接收到業(yè)務(wù)請(qǐng)求后,并同樣為業(yè)務(wù)請(qǐng)求分配控制業(yè)務(wù)請(qǐng)求的EJB容器線程;[0044]步驟107,EJB容器線程創(chuàng)建執(zhí)行業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,EJB執(zhí)行線程被設(shè)置了可允許執(zhí)行的時(shí)限,該時(shí)限為SLA_TimeOut;[0045]本步驟與步驟103類似,可以使用JAVA開發(fā)工具JDK的FutureTask模式創(chuàng)建作為異步任務(wù)的EJB執(zhí)行線程(ExecutableThread),該線程真正的處理該業(yè)務(wù)請(qǐng)求在EJB服務(wù)器上應(yīng)該被執(zhí)行的部分,并且當(dāng)EJB容器線程需要時(shí)可以通過EJB執(zhí)行線程獲取執(zhí)行線程已經(jīng)處理完的業(yè)務(wù)請(qǐng)求。創(chuàng)建該EJB執(zhí)行線程時(shí),EJB容器線程也會(huì)傳遞過來(lái)的將該SLA_TimeOut告訴EJB執(zhí)行線程,以便EJB執(zhí)行線程在處理業(yè)務(wù)請(qǐng)求的過程中,實(shí)時(shí)監(jiān)控自己的執(zhí)行時(shí)間。[0046]步驟108,EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求,并將業(yè)務(wù)請(qǐng)求發(fā)送到數(shù)據(jù)庫(kù)繼續(xù)處理,如果EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求,并等待數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間超過SLA_TimeOut,則執(zhí)行步驟109;否則,則說(shuō)明執(zhí)行未超時(shí),可按照現(xiàn)有技術(shù)繼續(xù)進(jìn)行,完成后EJB容器線程以及EJB執(zhí)行線程釋放資源,請(qǐng)求執(zhí)行完畢。[0047]本實(shí)施例中,等待數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間是指數(shù)據(jù)庫(kù)對(duì)該業(yè)務(wù)請(qǐng)求進(jìn)行處理并返回響應(yīng)的時(shí)間。[0048]在該步驟108中EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求與等待數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間總共不超過SLA_TimeOut,因此,當(dāng)具體判斷是否超時(shí)時(shí),需將SLA_TimeOut時(shí)間分成兩部分。例如:SLA_TimeOut為10秒,若EJB執(zhí)行線程執(zhí)行業(yè)務(wù)請(qǐng)求的時(shí)間為6秒,相應(yīng)地,數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間應(yīng)該為4秒,因此當(dāng)EJB執(zhí)行線程執(zhí)行時(shí)間超過6秒時(shí),則可認(rèn)為業(yè)務(wù)請(qǐng)求的處理超時(shí),EJB執(zhí)行線程中止。[0049]步驟109,EJB執(zhí)行線程向數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,中止業(yè)務(wù)請(qǐng)求的執(zhí)行;[0050]優(yōu)選方案,該步驟109還可包括:EJB容器線程返回客戶端系統(tǒng)繁忙信息,并發(fā)送告警到管理配置平臺(tái)。管理配置平臺(tái)可將告警發(fā)送到告警系統(tǒng),通知運(yùn)維人員進(jìn)行處理,同時(shí),EJB容器線程以及EJB執(zhí)行線程釋放資源,請(qǐng)求執(zhí)行完畢。[0051]步驟110,數(shù)據(jù)庫(kù)接收到該取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理,并回滾,即數(shù)據(jù)庫(kù)恢復(fù)到接收該業(yè)務(wù)請(qǐng)求之前的狀態(tài)。[0052]通過執(zhí)行本實(shí)施例的方法,如圖3所示,例如當(dāng)某個(gè)業(yè)務(wù)請(qǐng)求出現(xiàn)異常時(shí),在該業(yè)務(wù)執(zhí)行時(shí)間到達(dá)SLA_TimeOut后,執(zhí)行線程能夠及時(shí)中止該業(yè)務(wù)請(qǐng)求的處理,并通過客戶端及時(shí)返回提示信息,避免用戶長(zhǎng)時(shí)間等待出現(xiàn)白屏問題;如圖4所示,例如當(dāng)數(shù)據(jù)庫(kù)針對(duì)某個(gè)業(yè)務(wù)請(qǐng)求運(yùn)行時(shí)間長(zhǎng),執(zhí)行時(shí)間到達(dá)該業(yè)務(wù)的SLA_TimeOut后,數(shù)據(jù)庫(kù)事務(wù)自動(dòng)進(jìn)行取消回滾,防止數(shù)據(jù)庫(kù)資源耗盡導(dǎo)致整個(gè)系統(tǒng)崩潰,并在客戶端及時(shí)返回提示信息,避免用戶長(zhǎng)時(shí)間等待白屏。[0053]本實(shí)施例提供的方法通過采用執(zhí)行時(shí)間對(duì)業(yè)務(wù)請(qǐng)求的處理進(jìn)行限制,同時(shí)創(chuàng)建可在超時(shí)時(shí)中止處理的執(zhí)行線程的技術(shù)手段,解決了現(xiàn)有技術(shù)中大量請(qǐng)求積壓在EJB或數(shù)據(jù)庫(kù)的技術(shù)問題,進(jìn)而取得了在發(fā)送業(yè)務(wù)請(qǐng)求處理無(wú)法響應(yīng)或異常時(shí),根據(jù)執(zhí)行時(shí)間強(qiáng)制中止執(zhí)行線程,使系統(tǒng)恢復(fù),局部的故障不會(huì)擴(kuò)散,提高系統(tǒng)可用性的技術(shù)效果,同時(shí)由于本方案還可在出現(xiàn)異常時(shí),返回提示信息和發(fā)送告警信息到告警系統(tǒng),查找異常原因,進(jìn)而避免系統(tǒng)可能產(chǎn)生的故障,取得減少業(yè)務(wù)中斷時(shí)長(zhǎng)的技術(shù)效果。[0054]實(shí)施例2[0055]為了便于實(shí)施例1的實(shí)現(xiàn),本實(shí)施例提供一種J2EE架構(gòu)下業(yè)務(wù)的處理系統(tǒng),如圖5所示,該系統(tǒng)包括:WEB容器裝置21及EJB容器裝置22;[0056]其中,WEB容器裝置21包括:[0057]WEB容器池模塊211,用于接收到客戶端發(fā)送來(lái)的業(yè)務(wù)請(qǐng)求后,為業(yè)務(wù)請(qǐng)求分配控制業(yè)務(wù)請(qǐng)求的WEB容器線程212;[0058]WEB容器線程212,用于獲取用戶為業(yè)務(wù)請(qǐng)求預(yù)設(shè)的執(zhí)行時(shí)間,并創(chuàng)建執(zhí)行業(yè)務(wù)請(qǐng)求的WEB執(zhí)行線程213,WEB執(zhí)行線程213設(shè)置有執(zhí)行時(shí)限為預(yù)設(shè)的執(zhí)行時(shí)間的限制;[0059]WEB執(zhí)行線程213,用于執(zhí)行業(yè)務(wù)請(qǐng)求,調(diào)用EJB服務(wù)器的應(yīng)用程序繼續(xù)執(zhí)行業(yè)務(wù)請(qǐng)求,以及將預(yù)設(shè)的執(zhí)行時(shí)間傳遞到EJB服務(wù)器;如果執(zhí)行業(yè)務(wù)請(qǐng)求,并調(diào)用EJB服務(wù)器的應(yīng)用程序的時(shí)間超過預(yù)設(shè)的執(zhí)行時(shí)間,則中止調(diào)用;否則由EJB服務(wù)器繼續(xù)執(zhí)行業(yè)務(wù)請(qǐng)求;[0060]其中,EJB容器裝置22包括:[0061]EJB容器池模塊221,用于接收WEB執(zhí)行線程發(fā)送而來(lái)的業(yè)務(wù)請(qǐng)求,并為業(yè)務(wù)請(qǐng)求分配控制業(yè)務(wù)請(qǐng)求的EJB容器線程222;[0062]EJB容器線程222,用于創(chuàng)建執(zhí)行業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程223,EJB執(zhí)行線程223設(shè)置有執(zhí)行時(shí)限為預(yù)設(shè)的執(zhí)行時(shí)間的限制;[0063]EJB執(zhí)行線程223,用于執(zhí)行業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送業(yè)務(wù)請(qǐng)求繼續(xù)處理;如果執(zhí)行業(yè)務(wù)請(qǐng)求,并等待數(shù)據(jù)庫(kù)處理業(yè)務(wù)請(qǐng)求的時(shí)間超過預(yù)設(shè)的執(zhí)行時(shí)間,則向數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止業(yè)務(wù)請(qǐng)求的執(zhí)行。[0064]優(yōu)選方案中,該系統(tǒng)還包括:[0065]管理配置裝置23,用于接收用戶預(yù)設(shè)的執(zhí)行時(shí)間,并將執(zhí)行時(shí)間發(fā)送到WEB服務(wù)器或EJB服務(wù)器。[0066]進(jìn)一步,WEB容器裝置21還包括:[0067]WEB告警模塊214,用于在WEB執(zhí)行線程213中止調(diào)用后,返回客戶端系統(tǒng)繁忙信息,以及發(fā)送告警到管理配置裝置;[0068]EJB容器裝置22還包括:[0069]EJB告警模塊224,用于在EJB執(zhí)行線程223中止業(yè)務(wù)請(qǐng)求的執(zhí)行后,通過WEB服務(wù)器返回客戶端系統(tǒng)繁忙信息,以及發(fā)送告警到管理配置裝置。[0070]優(yōu)選方案中,該系統(tǒng)還包括數(shù)據(jù)庫(kù)裝置24;[0071]數(shù)據(jù)庫(kù)裝置24,用于接收到EJB執(zhí)行線程223發(fā)送的取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理。[0072]更優(yōu)選地,WEB容器裝置21位于WEB服務(wù)器;EJB容器裝置22位于EJB服務(wù)器;管理配置23裝置位于管理配置平臺(tái),數(shù)據(jù)庫(kù)裝置位于數(shù)據(jù)庫(kù)實(shí)體中。此外,根據(jù)情況需要,WEB服務(wù)器與EJB服務(wù)器是同一服務(wù)器時(shí),WEB容器裝置21與EJB容器裝置22位于EJB服務(wù)器也將安裝在同一服務(wù)器上。[0073]本實(shí)施例提供的系統(tǒng)中,通過將容器線程和執(zhí)行線程分離,實(shí)現(xiàn)了可精確的控制了整個(gè)業(yè)務(wù)請(qǐng)求在WEB服務(wù)器、EJB服務(wù)器和數(shù)據(jù)庫(kù)的執(zhí)行時(shí)間,實(shí)現(xiàn)系統(tǒng)故障情況時(shí)的自我保護(hù)和自我恢復(fù)功能。并且,本系統(tǒng)與現(xiàn)有技術(shù)中中間件平臺(tái)提供的RMI調(diào)用超時(shí)參數(shù)相比,可以根據(jù)業(yè)務(wù)需要針對(duì)每個(gè)業(yè)務(wù)單獨(dú)配置執(zhí)行回滾時(shí)間,通過整個(gè)業(yè)務(wù)請(qǐng)求在WEB服務(wù)器、EJB服務(wù)器和數(shù)據(jù)庫(kù)的同步控制,保證應(yīng)用事務(wù)的一致性;不管是WEB服務(wù)器上、EJB服務(wù)器還是數(shù)據(jù)庫(kù)上,局部的故障不會(huì)擴(kuò)散;此外,還可以進(jìn)行實(shí)時(shí)告警,讓維護(hù)人員及時(shí)處理系統(tǒng)潛在故障,減少系統(tǒng)中斷時(shí)間。[0074]本實(shí)施例的系統(tǒng)可以應(yīng)用于任何中間件平臺(tái),比如OracleWeblogic、IBMWebsphere、Tomcat等,不依賴于中間件廠商。[0075]本發(fā)明實(shí)施例提供的上述設(shè)備或裝置等產(chǎn)品是屬于以計(jì)算機(jī)程序的流程方法為依據(jù),并按照與方法實(shí)施例1和/或附圖中方法流程的各步驟完全對(duì)應(yīng)一致的方式,所提供的功能模塊。并且由于這種功能模塊是通過計(jì)算機(jī)程序的方式實(shí)現(xiàn)的軟件裝置,所以對(duì)于系統(tǒng)實(shí)施例2未具體提及的功能模塊,由于考慮到根據(jù)上述方法實(shí)施例記載的內(nèi)容已經(jīng)足夠使本領(lǐng)域技術(shù)人員從方法記錄的各流程步驟直接地、毫無(wú)意外地確定實(shí)現(xiàn)所述步驟所必須建立的功能模塊,所以在此不贅述。[0076]本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分是以軟件產(chǎn)品的形式體現(xiàn)出來(lái)的功能,也即是說(shuō):本發(fā)明的裝置、設(shè)備或者組成系統(tǒng)的各個(gè)設(shè)備其所執(zhí)行的方法或?qū)崿F(xiàn)的功能主體即便為硬件,但是實(shí)際上實(shí)現(xiàn)本發(fā)明上述功能的部分卻是計(jì)算機(jī)軟件產(chǎn)品的模塊或單元。并且該計(jì)算機(jī)軟件產(chǎn)品可存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺(tái)設(shè)備執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。[0077]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明能有多種不同形式的【具體實(shí)施方式】,上文結(jié)合附圖對(duì)本發(fā)明做舉例說(shuō)明,這并不意味著本發(fā)明所應(yīng)用的【具體實(shí)施方式】只能局限在這些特定的【具體實(shí)施方式】中,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)了解,上文所提供的【具體實(shí)施方式】只是多種優(yōu)選實(shí)施方式中的一些示例,任何體現(xiàn)本發(fā)明權(quán)利要求的【具體實(shí)施方式】均應(yīng)在本發(fā)明權(quán)利要求所要求保護(hù)的范圍之內(nèi);本領(lǐng)域的技術(shù)人員能夠?qū)ι衔母鳌揪唧w實(shí)施方式】中所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換或者改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。【權(quán)利要求】1.一種J2EE架構(gòu)下業(yè)務(wù)的處理方法,其特征在于,包括:應(yīng)用層EJB服務(wù)器接收到來(lái)自展現(xiàn)層WEB服務(wù)器的業(yè)務(wù)請(qǐng)求和預(yù)設(shè)的執(zhí)行時(shí)間,并為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的EJB容器線程;EJB容器線程創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,所述EJB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;所述EJB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送所述業(yè)務(wù)請(qǐng)求繼續(xù)處理;如果所述EJB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,并等待所述數(shù)據(jù)庫(kù)處理所述業(yè)務(wù)請(qǐng)求的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則所述EJB執(zhí)行線程向所述數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行;所述數(shù)據(jù)庫(kù)接收到該取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理,并回滾。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:WEB服務(wù)器接收客戶端發(fā)送而來(lái)的業(yè)務(wù)請(qǐng)求后,為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的WEB容器線程;WEB容器線程獲取用戶為所述業(yè)務(wù)請(qǐng)求預(yù)設(shè)的執(zhí)行時(shí)間,并創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的WEB執(zhí)行線程,所述WEB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;所述WEB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,調(diào)用應(yīng)用層EJB服務(wù)器的應(yīng)用程序繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求,并將所述預(yù)設(shè)的執(zhí)行時(shí)間傳遞到所述EJB服務(wù)器;如果所述WEB執(zhí)行線程執(zhí)行所述業(yè)務(wù)請(qǐng)求,并調(diào)用EJB服務(wù)器的應(yīng)用程序的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則所述WEB執(zhí)行線程中止所述調(diào)用;否則由EJB服務(wù)器繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行后,該方法還包括:所述EJB容器線程通過WEB服務(wù)器返回所述客戶端系統(tǒng)繁忙信息,以及向管理配置平臺(tái)發(fā)送告警。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述WEB執(zhí)行線程中止所述調(diào)用后,該方法還包括:所述WEB容器線程返回所述客戶端系統(tǒng)繁忙信息,以及發(fā)送告警到管理配置平臺(tái)。5.根據(jù)權(quán)利要求3或4所述的方法,所述管理配置平臺(tái)接收用戶預(yù)設(shè)的所述執(zhí)行時(shí)間,所述管理配置平臺(tái)將所述執(zhí)行時(shí)間發(fā)送到WEB服務(wù)器或EJB服務(wù)器。6.一種J2EE架構(gòu)下業(yè)務(wù)的處理系統(tǒng),其特征在于,包括:WEB容器裝置及EJB容器裝置;其中,所述WEB容器裝置包括:WEB容器池模塊,用于接收到客戶端發(fā)送來(lái)的業(yè)務(wù)請(qǐng)求后,為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的WEB容器線程;WEB容器線程,用于獲取用戶為所述業(yè)務(wù)請(qǐng)求預(yù)設(shè)的執(zhí)行時(shí)間,并創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的WEB執(zhí)行線程,所述WEB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;WEB執(zhí)行線程,用于執(zhí)行所述業(yè)務(wù)請(qǐng)求,調(diào)用EJB服務(wù)器的應(yīng)用程序繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求,以及將所述預(yù)設(shè)的執(zhí)行時(shí)間傳遞到所述EJB服務(wù)器;如果執(zhí)行所述業(yè)務(wù)請(qǐng)求,并調(diào)用EJB服務(wù)器的應(yīng)用程序的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則中止所述調(diào)用;否則由EJB服務(wù)器繼續(xù)執(zhí)行所述業(yè)務(wù)請(qǐng)求;其中,所述EJB容器裝置包括:EJB容器池模塊,用于接收WEB執(zhí)行線程發(fā)送而來(lái)的所述業(yè)務(wù)請(qǐng)求,并為所述業(yè)務(wù)請(qǐng)求分配控制所述業(yè)務(wù)請(qǐng)求的EJB容器線程;EJB容器線程,用于創(chuàng)建執(zhí)行所述業(yè)務(wù)請(qǐng)求的EJB執(zhí)行線程,所述EJB執(zhí)行線程設(shè)置有執(zhí)行時(shí)限為所述預(yù)設(shè)的執(zhí)行時(shí)間的限制;EJB執(zhí)行線程,用于執(zhí)行所述業(yè)務(wù)請(qǐng)求,并向數(shù)據(jù)庫(kù)發(fā)送所述業(yè)務(wù)請(qǐng)求繼續(xù)處理;如果執(zhí)行所述業(yè)務(wù)請(qǐng)求,并等待所述數(shù)據(jù)庫(kù)處理所述業(yè)務(wù)請(qǐng)求的時(shí)間超過所述預(yù)設(shè)的執(zhí)行時(shí)間,則向所述數(shù)據(jù)庫(kù)發(fā)送取消請(qǐng)求,并中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行。7.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,該系統(tǒng)還包括:管理配置裝置,用于接收用戶預(yù)設(shè)的所述執(zhí)行時(shí)間,并將所述執(zhí)行時(shí)間發(fā)送到WEB服務(wù)器或EJB服務(wù)器。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述WEB容器裝置還包括:WEB告警模塊,用于在所述WEB執(zhí)行線程中止所述調(diào)用后,返回所述客戶端系統(tǒng)繁忙信息,以及發(fā)送告警到管理配置裝置;所述EJB容器裝置還包括:EJB告警模塊,用于在所`述EJB執(zhí)行線程中止所述業(yè)務(wù)請(qǐng)求的執(zhí)行后,通過WEB服務(wù)器返回所述客戶端系統(tǒng)繁忙信息,以及發(fā)送告警到管理配置裝置。9.根據(jù)權(quán)利要求6-8中任意一項(xiàng)所述的系統(tǒng),其特征在于,該系統(tǒng)還包括數(shù)據(jù)庫(kù)裝置;所述數(shù)據(jù)庫(kù)裝置,用于接收到所述EJB執(zhí)行線程發(fā)送的所述取消請(qǐng)求后中止對(duì)業(yè)務(wù)請(qǐng)求的處理。10.根據(jù)權(quán)利要求6-8中任意一項(xiàng)所述的系統(tǒng),其特征在于,所述WEB容器裝置位于WEB服務(wù)器;所述EJB容器裝置位于EJB服務(wù)器;所述管理配置裝置位于管理配置平臺(tái)。【文檔編號(hào)】H04L12/24GK103873276SQ201210535515【公開日】2014年6月18日申請(qǐng)日期:2012年12月12日優(yōu)先權(quán)日:2012年12月12日【發(fā)明者】鐘儲(chǔ)建,于祥兵,蔣海濱申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)浙江有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
平定县| 阳高县| 巴林右旗| 黄浦区| 昭苏县| 航空| 牡丹江市| 中江县| 南宫市| 龙岩市| 慈利县| 瑞安市| 望谟县| 抚远县| 甘肃省| 新密市| 西乡县| 武威市| 霍山县| 卫辉市| 松原市| 九江市| 普定县| 共和县| 上虞市| 乌兰县| 邹平县| 永吉县| 喀喇沁旗| 来宾市| 翼城县| 赤城县| 白玉县| 湘潭县| 秭归县| 深水埗区| 涪陵区| 玉山县| 博野县| 太仓市| 张家界市|