基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種熱部署實(shí)現(xiàn)方法,具體地說(shuō)是一種基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]作為與科技建設(shè)工作同等重要的運(yùn)維工作,已被逐漸重視起來(lái)。如何節(jié)約運(yùn)維的成本、提高運(yùn)維的效率、保障運(yùn)維的安全,這是一個(gè)很廣闊的課題。而部署作為運(yùn)維中必不可少的一環(huán),關(guān)系著最為關(guān)鍵的系統(tǒng)的穩(wěn)定運(yùn)行,格外受到關(guān)注。目前,基于Java開(kāi)發(fā)的web項(xiàng)目在各大企業(yè)中較多。而Java web項(xiàng)目的熱部署實(shí)現(xiàn)對(duì)于縮短業(yè)務(wù)系統(tǒng)部署過(guò)程中對(duì)外服務(wù)中斷時(shí)間和簡(jiǎn)化部署步驟有著極大的意義。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是提供一種基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法,該方法是基于過(guò)濾器可對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制進(jìn)行展開(kāi)的,在部署Java web項(xiàng)目的過(guò)程中提高部署效率、降低部署難度。
[0004]本發(fā)明的目的通過(guò)以下技術(shù)方案實(shí)現(xiàn):
一種基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法,其特征在于:該方法基于過(guò)濾器對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制,在過(guò)濾器中對(duì)攔截的資源使用自定義的轉(zhuǎn)化處理器(UriDispatcher)解釋?zhuān)欢远x的轉(zhuǎn)化處理器中綁定了自定義的ClassLoader,通過(guò)ClassLoader對(duì)新資源包的裝載和對(duì)ClassLoader的替換,以達(dá)到對(duì)request請(qǐng)求的動(dòng)態(tài)解釋?zhuān)凰峁┳?cè)并生效機(jī)制,主要包括:
1)自定義ClassLoader注冊(cè)到轉(zhuǎn)化處理器UriDispatcher機(jī)制;
2)自定義的轉(zhuǎn)化處理器UriDispatcher注冊(cè)到自定義過(guò)濾器機(jī)制;
3)自定義過(guò)濾器實(shí)現(xiàn)與生效機(jī)制。
[0005]該方法處理的邏輯過(guò)程如下:當(dāng)客戶(hù)端瀏覽器發(fā)出http請(qǐng)求url時(shí),實(shí)現(xiàn)filter接口的過(guò)濾器類(lèi)AbstractSystemFilter截獲這個(gè)url,該類(lèi)中有個(gè)屬性接口 ClassLoader,當(dāng)進(jìn)行熱部署服務(wù)的時(shí)候,會(huì)將新的class類(lèi)注冊(cè)到這個(gè)ClassLoader類(lèi)中,MVC分發(fā)器根據(jù)這個(gè)url請(qǐng)求,映射找出具體的業(yè)務(wù)邏輯處理類(lèi)class,這個(gè)class就是熱部署服務(wù)更新上去的ClassLoader加載出來(lái)的。
[0006]本發(fā)明是為了在部署Java web項(xiàng)目的過(guò)程中提高部署效率、降低部署難度而產(chǎn)生的,可在用戶(hù)未感知系統(tǒng)中斷的情況下增加新業(yè)務(wù)模塊和修正已有缺陷,大大提高了用戶(hù)使用系統(tǒng)的體驗(yàn)。
【具體實(shí)施方式】
[0007]—種基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法,從J2EE1.3開(kāi)始,Servlet2.3規(guī)范中加入了對(duì)Java過(guò)濾器(Java filter)的支持。過(guò)濾器的功能是對(duì)目標(biāo)資源的請(qǐng)求和響應(yīng)進(jìn)行截取。Java web項(xiàng)目的熱部署技術(shù)正是基于過(guò)濾器可對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制進(jìn)行展開(kāi)的,其核心思想為在過(guò)濾器中對(duì)攔截的資源使用自定義的轉(zhuǎn)化處理器(UriDispatcher)解釋。而自定義的轉(zhuǎn)化處理器中綁定了自定義的ClassLoader,通過(guò)ClassLoader對(duì)新資源包的裝載和對(duì)ClassLoader的替換,以達(dá)到對(duì)request請(qǐng)求的動(dòng)態(tài)解釋。
[0008]Java web項(xiàng)目熱部署所提供注冊(cè)并生效機(jī)制,主要包括:
1.自定義ClassLoader注冊(cè)到轉(zhuǎn)化處理器UriDispatcher機(jī)制
2.自定義的轉(zhuǎn)化處理器UriDispatcher注冊(cè)到自定義過(guò)濾器機(jī)制
3.自定義過(guò)濾器實(shí)現(xiàn)與生效機(jī)制
處理的邏輯過(guò)程如下:當(dāng)客戶(hù)端瀏覽器發(fā)出http請(qǐng)求url時(shí),實(shí)現(xiàn)filter接口的過(guò)濾器類(lèi)AbstractSystemFilter截獲這個(gè)url,該類(lèi)中會(huì)有個(gè)屬性接口 ClassLoader (實(shí)現(xiàn)類(lèi)中是該子類(lèi)),當(dāng)進(jìn)行熱部署服務(wù)的時(shí)候,會(huì)將新的class類(lèi)注冊(cè)到這個(gè)ClassLoader類(lèi)中,MVC分發(fā)器會(huì)根據(jù)這個(gè)url請(qǐng)求,映射找出具體的業(yè)務(wù)邏輯處理類(lèi)class,這個(gè)class就是熱部署服務(wù)更新上去的ClassLoader加載出來(lái)的。
[0009]本發(fā)明開(kāi)發(fā)出熱部署工具jar包提供給業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)按照jar包中的使用說(shuō)明文檔,按規(guī)范開(kāi)發(fā)支持熱部署服務(wù)的系統(tǒng)。業(yè)務(wù)系統(tǒng)上線(xiàn)后,根據(jù)具體的熱部署管理的URL進(jìn)行維護(hù)自身業(yè)務(wù)模塊的熱部署。
[0010]Java web項(xiàng)目熱部署處理的對(duì)象是業(yè)務(wù)相關(guān)的核心jar包以及熱部署的配置文件。當(dāng)項(xiàng)目啟動(dòng)時(shí)配置信息加載到內(nèi)存中,同時(shí)自定義的ClassLoader在JVM中初始并實(shí)例化。
【主權(quán)項(xiàng)】
1.一種基于Java web項(xiàng)目的熱部署實(shí)現(xiàn)方法,其特征在于:該方法基于過(guò)濾器對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制,在過(guò)濾器中對(duì)攔截的資源使用自定義的轉(zhuǎn)化處理器解釋?zhuān)欢远x的轉(zhuǎn)化處理器中綁定了自定義的ClassLoader,通過(guò)ClassLoader對(duì)新資源包的裝載和對(duì)ClassLoader的替換,以達(dá)到對(duì)request請(qǐng)求的動(dòng)態(tài)解釋?zhuān)凰峁┳?cè)并生效機(jī)制,主要包括: 1)自定義ClassLoader注冊(cè)到轉(zhuǎn)化處理器UriDispatcher機(jī)制; 2)自定義的轉(zhuǎn)化處理器UriDispatcher注冊(cè)到自定義過(guò)濾器機(jī)制; 3)自定義過(guò)濾器實(shí)現(xiàn)與生效機(jī)制。2.根據(jù)權(quán)利要求1所述的基于Javaweb項(xiàng)目的熱部署實(shí)現(xiàn)方法,其特征在于:該方法處理的邏輯過(guò)程如下:當(dāng)客戶(hù)端瀏覽器發(fā)出http請(qǐng)求url時(shí),實(shí)現(xiàn)filter接口的過(guò)濾器類(lèi)AbstractSystemFilter截獲這個(gè)url,該類(lèi)中有個(gè)屬性接口 ClassLoader,當(dāng)進(jìn)行熱部署服務(wù)的時(shí)候,會(huì)將新的class類(lèi)注冊(cè)到這個(gè)ClassLoader類(lèi)中,MVC分發(fā)器根據(jù)這個(gè)url請(qǐng)求,映射找出具體的業(yè)務(wù)邏輯處理類(lèi)class,這個(gè)class就是熱部署服務(wù)更新上去的ClassLoader加載出來(lái)的。
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于Java?web項(xiàng)目的熱部署實(shí)現(xiàn)方法,基于過(guò)濾器對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制,在過(guò)濾器中對(duì)攔截的資源使用自定義的轉(zhuǎn)化處理器解釋?zhuān)欢远x的轉(zhuǎn)化處理器中綁定了自定義的ClassLoader,通過(guò)ClassLoader對(duì)新資源包的裝載和對(duì)ClassLoader的替換,以達(dá)到對(duì)request請(qǐng)求的動(dòng)態(tài)解釋?zhuān)辉摲椒ㄊ腔谶^(guò)濾器可對(duì)所有request請(qǐng)求進(jìn)行攔截處理的機(jī)制進(jìn)行展開(kāi)的,在部署Java?web項(xiàng)目的過(guò)程中提高部署效率、降低部署難度。
【IPC分類(lèi)】G06F9/445
【公開(kāi)號(hào)】CN105242948
【申請(qǐng)?zhí)枴緾N201510704163
【發(fā)明人】張震宇, 李輝, 徐明珠
【申請(qǐng)人】江蘇電力信息技術(shù)有限公司, 江蘇省電力公司
【公開(kāi)日】2016年1月13日
【申請(qǐng)日】2015年10月27日