999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于J2EE的模塊熱部署實(shí)現(xiàn)技術(shù)

2016-05-30 10:48:04高沈鋼傅啟明
企業(yè)科技與發(fā)展 2016年8期

高沈鋼 傅啟明

【摘 要】熱部署技術(shù)可以提高項(xiàng)目部署效率、降低部署難度,在不中斷系統(tǒng)服務(wù)的情況下更能提高用戶的使用體驗(yàn)。文章總結(jié)了業(yè)界實(shí)現(xiàn)Java熱部署的2種實(shí)現(xiàn)方式,并另辟蹊徑地從項(xiàng)目模塊的角度提出實(shí)現(xiàn)J2EE項(xiàng)目熱部署的一種機(jī)制,最后展望了熱部署的發(fā)展前景。

【關(guān)鍵詞】J2EE;熱部署;模塊

【中圖分類號】TP393.08 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2016)08-0023-03

0 引言

在國有大中型企業(yè)中,項(xiàng)目的運(yùn)行和維護(hù)工作占據(jù)了很重要的一環(huán),特別是發(fā)布新版本的部署工作,關(guān)系著系統(tǒng)的穩(wěn)定運(yùn)行,成為運(yùn)行和維護(hù)工作的重中之重。J2EE目前在國企中得到了廣泛應(yīng)用,因此研究能簡化部署步驟、縮短新版本發(fā)布時(shí)對外中斷服務(wù)時(shí)間的J2EE熱部署技術(shù)有著極其重要的意義。

1 Java熱部署概念

J2EE追本溯源是Java,從技術(shù)層面講,Java熱部署指的是在不重啟Java虛擬機(jī)的前提下,能自動(dòng)偵測到class文件的變化并更新運(yùn)行時(shí)class的行為。反映到項(xiàng)目上,就是不需要停止并重新啟用Java程序(web服務(wù)器或者Java的應(yīng)用),只需替換相應(yīng)的Java資源(如jar包),就能使運(yùn)行中的程序加載新的資源改變原有的業(yè)務(wù)邏輯。

2 Java熱部署實(shí)現(xiàn)方式

受到Java虛擬機(jī)類裝載機(jī)制和其語言本身的限制,目前業(yè)界的Java熱部署技術(shù)的基本方案都是實(shí)現(xiàn)了自己的類加載器,在運(yùn)行時(shí)再通過重新構(gòu)造類加載后實(shí)現(xiàn)的。在此方案的基礎(chǔ)上,實(shí)現(xiàn)方式可以大致分為2類。

2.1 遵照OSGI方式實(shí)現(xiàn)

OSGI(Open Service Gateway Initiative,Java動(dòng)態(tài)模塊化系統(tǒng)規(guī)范)是一個(gè)通用框架,著名的可擴(kuò)展開發(fā)平臺Eclipse(3.0以后)就是基于它實(shí)現(xiàn)的。OSGI框架劃分為4個(gè)層次:L0運(yùn)行環(huán)境、L1模塊、L2生命周期管理、L3服務(wù)注冊,為組件(Bundle)提供了一個(gè)標(biāo)準(zhǔn)環(huán)境。基于OSGI開發(fā)的組件可被動(dòng)態(tài)安裝、開啟、關(guān)閉、更新和卸載,實(shí)現(xiàn)比較復(fù)雜。

2.2 基于J2EE容器特性實(shí)現(xiàn)

直接利用J2EE容器特性實(shí)現(xiàn)熱部署,如weblogic的開發(fā)模式及其10.3.6以上版本實(shí)現(xiàn)的對熱部署的支持。由于基于J2EE容器特性實(shí)現(xiàn)部署粒度較大(應(yīng)用級),因此熱部署時(shí)會出現(xiàn)session會話丟失和內(nèi)存泄漏等問題,且不能做到真正的零間隔熱部署。

3 基于模塊實(shí)現(xiàn)的熱部署

為了解決實(shí)現(xiàn)過于復(fù)雜而效率低下、受容器限制、session丟失和部署時(shí)停止服務(wù)等問題,江蘇電力信息技術(shù)有限公司經(jīng)過十多年的java項(xiàng)目開發(fā)經(jīng)驗(yàn)的積累與探索,提出了一種基于模塊的熱部署實(shí)現(xiàn)技術(shù)。

3.1 技術(shù)核心

基于J2EE項(xiàng)目實(shí)現(xiàn)模塊熱部署的技術(shù)核心在于類裝載器ClassLoader的幾個(gè)基本特性。

(1)共享特性:此特性源于Java的雙親委派機(jī)制。ClassLoader有繼承關(guān)系時(shí),子類裝載器載入類時(shí)可設(shè)置為優(yōu)先搜索父裝載器。因此,公用的非模塊類可由父ClassLoader裝載以達(dá)到子ClassLoader的共享。

(2)隔離特性:沒有繼承關(guān)系的ClassLoader之間,其互相的代碼可看作是完全隔離的。這個(gè)特性保證了基于無繼承關(guān)系的ClassLoader的模塊互不影響。

(3)裝載特性:作為對象的子ClassLoader可被父ClassLoader重新載入。老的子ClassLoader會被卸載,即當(dāng)該子ClassLoader中所有關(guān)聯(lián)的Object都不再被引用時(shí),此時(shí)JVM在適當(dāng)?shù)臅r(shí)機(jī)就會對關(guān)聯(lián)Object和ClassLoader進(jìn)行垃圾回收。

(4)通信特性:在子ClassLoader中實(shí)例化出來的變量,可保存至父ClassLoader變量中。父ClassLo-

ader不能隨意訪問,只能通過類反射機(jī)制或轉(zhuǎn)化為父ClassLoader中的一個(gè)類或接口進(jìn)行訪問。

3.2 基本原理

通過引入自實(shí)現(xiàn)的輕量級熱部署工具包,將項(xiàng)目本身的應(yīng)用作為熱部署實(shí)現(xiàn)的容器,項(xiàng)目的業(yè)務(wù)模塊則作為熱部署的資源。熱部署時(shí),應(yīng)用本身沒變化,變化的只是需要替換業(yè)務(wù)邏輯的業(yè)務(wù)模塊資源包。應(yīng)用將對資源包進(jìn)行重新加載與解釋執(zhí)行。

3.3 Java通用實(shí)現(xiàn)方式

通用實(shí)現(xiàn)方式定義與實(shí)現(xiàn)如下。

(1)定制類加載器(ConfigurableClassLoader):用于動(dòng)態(tài)指定Classpath和指定查找類順序(如是否優(yōu)先查找父Classloader),重新實(shí)現(xiàn)資源的載入機(jī)制。

(2)動(dòng)態(tài)模塊(DynamicModule):一個(gè)動(dòng)態(tài)模塊對應(yīng)一個(gè)熱部署單元(即業(yè)務(wù)模塊資源包)。包括了ConfigurableClassLoader和DynamicModuleCfg。

(3)動(dòng)態(tài)模塊配置器(DynamicModuleCfg):用于動(dòng)態(tài)模塊的配置,主要包括對模塊名、classpath、jar資源在部署包中的路徑等信息的描述。

(4)動(dòng)態(tài)模塊管理器(CfgDynamicModuleMgr):用于動(dòng)態(tài)模塊的管理,如動(dòng)態(tài)模塊的添加、停止、重新加載,同時(shí)提供所有對外的接口。

3.4 J2EE的實(shí)現(xiàn)方式

考慮到J2EE的多層架構(gòu),我們將熱部署與J2EE深度融合后做出如下組件設(shè)計(jì):定制類加載器、動(dòng)態(tài)模塊管理器、Bean容器管理器、MVC轉(zhuǎn)發(fā)器。

圖1中,定制類加載器、動(dòng)態(tài)模塊、動(dòng)態(tài)模塊管理器即通用實(shí)現(xiàn)中的概念。在基于J2EE項(xiàng)目的模塊熱部署實(shí)現(xiàn)中,動(dòng)態(tài)模塊包含MVC轉(zhuǎn)發(fā)器和Bean容器管理器。其中,MVC轉(zhuǎn)發(fā)器主要是Controller類,Bean容器主要管理J2EE項(xiàng)目中各種Service和Dao類及之間的依賴關(guān)系。熱部署工具包中利用注解實(shí)現(xiàn)了MVC的URI映射、各種Bean的定義、實(shí)例化和相互的依賴關(guān)系,供動(dòng)態(tài)模塊使用。

3.5 模塊熱部署的優(yōu)點(diǎn)

這種基于J2EE的模塊熱部署實(shí)現(xiàn)對比業(yè)界Java熱部署實(shí)現(xiàn)具有如下優(yōu)點(diǎn)。

(1)模塊熱部署比基于J2EE容器特性的熱部署顆粒度小,熱部署過程中模塊間互不影響,且不依賴于J2EE的容器特性。

(2)代碼開發(fā)比遵照OSGI實(shí)現(xiàn)的方式更簡單,減少了開發(fā)人員的學(xué)習(xí)成本;熱部署工具包中各種常用功能的注解實(shí)現(xiàn),更節(jié)約了開發(fā)成本。

(3)熱部署工具包是一個(gè)輕量級的jar包,放入J2EE項(xiàng)目侵入性小,由工具包實(shí)現(xiàn)了熱部署的模塊管理控制臺,可方便地進(jìn)行熱部署的管理工作。

4 結(jié)語

本文所述的基于J2EE項(xiàng)目的模塊熱部署技術(shù),從開發(fā)角度來看,技術(shù)原理更容易理解且熱部署代碼簡單可控。從運(yùn)維角度來看,模塊熱部署迅速,對外無中斷延遲,且系統(tǒng)會話保持不丟失。

在企業(yè)內(nèi)使用該基于J2EE模塊的熱部署技術(shù),可以避免停用服務(wù)更新版本的困擾,提高用戶使用系統(tǒng)的體驗(yàn),同時(shí)提高了部署效率、降低了部署的難度和對運(yùn)維人員的技術(shù)要求。從企業(yè)長遠(yuǎn)發(fā)展的角度來看,使用該項(xiàng)技術(shù)更可以加快企業(yè)的技術(shù)積累,為自動(dòng)化部署打下基礎(chǔ),提高企業(yè)的信息化開發(fā)與運(yùn)維能力。

參 考 文 獻(xiàn)

[1]周志明.深入理解JAVA虛擬機(jī)[M].第2版.北京:機(jī)械工業(yè)出版社,2013.

[2]許令波.深入分析Java Web技術(shù)內(nèi)幕[M].北京:電子工業(yè)出版社,2014.

[3]李海騁.熱部署技術(shù)的依賴修復(fù)問題研究[D].南京:南京大學(xué),2015.

[責(zé)任編輯:鐘聲賢]

主站蜘蛛池模板: 免费观看男人免费桶女人视频| 91探花在线观看国产最新| 在线观看亚洲成人| 青青青伊人色综合久久| 999在线免费视频| 91久久偷偷做嫩草影院精品| 99re精彩视频| 国产成人精品一区二区三区| 久久窝窝国产精品午夜看片| 97se综合| 免费一级无码在线网站| 国产乱人免费视频| 成年人福利视频| 亚洲精品成人片在线播放| 精品人妻系列无码专区久久| 美女扒开下面流白浆在线试听| 在线不卡免费视频| 久久熟女AV| 一级看片免费视频| 日韩av无码精品专区| 亚洲一区二区黄色| 亚洲免费毛片| 日本黄色a视频| 麻豆AV网站免费进入| 久青草网站| 亚洲成在人线av品善网好看| 欧美区国产区| 婷婷中文在线| 国产精品漂亮美女在线观看| 福利视频一区| 精品综合久久久久久97超人| 综合社区亚洲熟妇p| 婷婷色一区二区三区| a级毛片视频免费观看| 国产美女免费| 国产成人亚洲综合A∨在线播放| 国产一区二区在线视频观看| 亚洲日韩在线满18点击进入| 丝袜无码一区二区三区| 日韩无码视频专区| 国产精品hd在线播放| 亚洲欧美国产视频| 大乳丰满人妻中文字幕日本| 91破解版在线亚洲| 日韩高清在线观看不卡一区二区| 日韩欧美综合在线制服| 国产成人一区| 国产在线精品美女观看| 成人日韩欧美| 最新国语自产精品视频在| 九九视频免费在线观看| AV不卡无码免费一区二区三区| 亚洲中文字幕在线观看| 国产成熟女人性满足视频| 99久久亚洲精品影院| 国产人人射| 91亚洲视频下载| 67194亚洲无码| 一级片免费网站| 免费欧美一级| 亚洲欧美精品日韩欧美| 萌白酱国产一区二区| 国产 在线视频无码| 久久a级片| 国产精品香蕉| 亚洲一区无码在线| 国产一区二区视频在线| 精品国产欧美精品v| 日韩在线观看网站| 成年人视频一区二区| 久久婷婷六月| 99热这里只有精品5| 欧美成人手机在线视频| 波多野结衣一区二区三视频| 亚洲乱伦视频| 亚洲IV视频免费在线光看| 毛片久久久| 成人无码一区二区三区视频在线观看| 夜夜爽免费视频| 欧美另类图片视频无弹跳第一页| 国产精品福利导航| 高清欧美性猛交XXXX黑人猛交 |