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

基于LiveConnect技術(shù)的SVN Java Web插件的設(shè)計與開發(fā)

2015-09-18 05:54:00周文峰任洪敏
現(xiàn)代計算機(jī) 2015年13期
關(guān)鍵詞:功能

周文峰,任洪敏

(上海海事大學(xué)信息工程學(xué)院,上海201306)

基于LiveConnect技術(shù)的SVN Java Web插件的設(shè)計與開發(fā)

周文峰,任洪敏

(上海海事大學(xué)信息工程學(xué)院,上海201306)

隨著計算機(jī)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,互聯(lián)網(wǎng)已經(jīng)日益成為人們默認(rèn)的工作環(huán)境,而目前使用最為廣泛的Subversion版本控制系統(tǒng),只能在客戶端工作副本上工作,滿足不了人們在Web上管理文件的需求,因此重點研究基于LiveConnect技術(shù)和SVNKit技術(shù)開發(fā)一款實現(xiàn)SVN基本功能的SVN JavaWeb插件,該插件可以在Web環(huán)境上實現(xiàn)對工作區(qū)文件的管理,操作靈活,并且可以輕松嵌入其他JavaWeb項目中,以使該插件可以廣泛使用。

LiveConnect;SVN;SVNKit;Applet數(shù)字簽名;JNLP

0 引言

自20世紀(jì)70年代,配置控制理論第一次被提出以來,在版本控制工具領(lǐng)域中出現(xiàn)了很多配置管理工具如CVS、VSS、Git、SVN等,其中CVS是很多中小軟件公司使用最頻繁的版本控制工具,但由于它不能對目錄實現(xiàn)版本控制,不能記錄目錄的版本歷史,在軟件開發(fā)中不能實現(xiàn)文件的“移動”、“重命名”、“拷貝”等操作,使之逐漸被SVN(Subversion)取代。2000年2月, CollabNet公司啟動SVN項目,它的目標(biāo)就是實現(xiàn)CVS的絕大部分功能,并充分考慮現(xiàn)有的CVS用戶,使用方式上類似CVS。由于SVN的源代碼是公開的,所以最近幾年來,Subversion在國內(nèi)發(fā)展很迅速,被廣泛應(yīng)用于大小軟件公司,對各種資源文件進(jìn)行管理。Subversion目前使用最為廣泛的開源版本控制系統(tǒng),和客戶端TortoiseSVN一起管理工作區(qū)文件。它的核心是版本庫,儲存所有隨時間而變化的數(shù)據(jù)。

隨著Web技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)已經(jīng)日益成為人們默認(rèn)的工作平臺,傳統(tǒng)的客戶端工作區(qū)及管理客戶端工作區(qū)文件的版本控制軟件因不能滿足人們在Web環(huán)境上工作的需求而逐漸向互聯(lián)網(wǎng)上轉(zhuǎn)移。因此,本文開發(fā)的LiveSVNPlugin能夠解決在Web工作區(qū)管理文件的問題,且是采用最新的RIA(Rich Internet Application,富互聯(lián)網(wǎng)應(yīng)用)[1]技術(shù)開發(fā)的Java Web插件。RIA既具有傳統(tǒng)B/S結(jié)構(gòu)的Web應(yīng)用在開發(fā)、部署和維護(hù)方面的便利優(yōu)勢,也具有桌面應(yīng)用在交互能力和表現(xiàn)能力上所具有的美好體驗。LiveSVNPlugin采用了最新的Web開發(fā)技術(shù),如HTML5、CSS3、JQuery、LiveConnect等,操作靈活,集成方便,很容易嵌入其他Web項目中,用于實現(xiàn)對Web工作區(qū)上文件的版本控制。該插件實現(xiàn)了Subversion客戶端的基本功能,相對于目前使用的客戶端版本控制軟件,在Web領(lǐng)域具有很大使用價值,必定會是版本控制系統(tǒng)領(lǐng)域的一個突破。

1 基于LiveConnect技術(shù)的LiveSVNPlugin框架

1.1LiveConnect技術(shù)介紹

LiveConnect技術(shù)[1]是Web瀏覽器允許Java和JavaScript在Web頁面內(nèi)彼此交互溝通的一個新特性。它是目前實現(xiàn)Java App let應(yīng)用的一個DOM接口,允許每個程序操縱其包含的網(wǎng)頁,包括Java類調(diào)用JavaScript方法和訪問JavaScript環(huán)境及JavaScript訪問Java對象和調(diào)用Java方法。LiveConnect技術(shù)提供了兩個Java Applet的API包用于與JavaScript通信。這兩個包是netscape.javascript和netscape.plugin。其中netscape. javascript在客戶端和服務(wù)器端上都可以使用,包含兩個類:

netscape.javascript.JSObject和netscape.javascript. JSException,但netscape.plugin只能使用在客戶端,包含一個類:netscape.plugin.Plugin。

雖然LiveConnect通過連接JavaScript與Java可以創(chuàng)建非常強(qiáng)大的應(yīng)用程序,但是LiveConnect并不完全支持所有瀏覽器,目前,僅Netscape瀏覽器和Mozilla Firefox完全支持這個特性。通過LiveConnect技術(shù)可以開發(fā)出各種瀏覽器和客戶端交互的豐富的應(yīng)用程序。Applet與JavaScript的具體通信過程如下:

(1)JavaScript調(diào)用Java Applet:

window.document.SVNApplet.SVNFunction();

其中,SVNApp let是Java Applet應(yīng)用,SVNFunction()是SVNApplet里面的public類型的方法。

(2)Java Applet調(diào)用JavaScript方法:

//獲取JavaScript窗口句柄,引用當(dāng)前文檔窗口this值object類

JSObjectwin=JSObject.getWindow(this);

//調(diào)用頁面上的js方法showMsg()

Object obj[]=new Object[1];

obj[0]=info;

win.call("showMsg",obj);

其中,要加載第三方插件(import netscape. javascript.JSObject;),showMsg是JavaScript里面的函數(shù)。

function showMsg(obj)

{

......

}

1.2LiveSVNPlugin功能結(jié)構(gòu)圖

LiveSVNPlugin插件是一款基于LiveConnect技術(shù)的Java Web插件,它的功能結(jié)構(gòu)圖如圖1所示。

2 基于SVNkit技術(shù)的LiveSVNPlugin技術(shù)實現(xiàn)

2.1SVNkit技術(shù)介紹

SVNKit(JavaSVN)[5]是一個完全基于Java的訪問Subversion版本控制系統(tǒng)的一個客戶端工具庫,它具有很高的獨立性,具有跨操作系統(tǒng)的特性。Subversion是一家領(lǐng)先的和快速增長的開源版本控制系統(tǒng),而SVNKit使Subversion更接近Java世界!SVNKit是純粹的Java工具包,它實現(xiàn)了Subversion所有功能,提供了在Java應(yīng)用程序上操作Subversion工作副本及訪問和操作Subversion版本庫的一切API接口,并且兼容Subversion的最新版本,同時也支持SSH、HTTP、SVN和文件傳輸協(xié)議。

SVNKit對外提供的API編程接口中,主要有兩個High Level API和Low Level API,其中,通過High Level API接口,幾乎可以實現(xiàn)Subversion的所有操作,包括檢出、更新、提交、查看歷史、比較差異和瀏覽版本庫等。Low Level API接口封裝了Subversion版本庫的連接細(xì)節(jié),常用它來連接和直接操作版本庫。通過SVNKit技術(shù),可以開發(fā)出自己所需要的具有SVN特色各種應(yīng)用程序。

圖1 LiveSVNPlugin功能結(jié)構(gòu)圖

2.2LiveSVNPlugin內(nèi)部功能結(jié)構(gòu)類圖

在本項目中,登錄用戶可以看到遠(yuǎn)程工作空間上自己有權(quán)限的目錄和文件,并可以看到這些目錄和文件受(.svn)控制的狀態(tài)。它們的實現(xiàn)是基于異步加載的方式和SVNKit的相關(guān)方法在Servelet里面實現(xiàn)的,包括ourClientManager.getStatusClient().doStatus和manager.parseRootPaths(new User(userName),null))等方法。

通過LiveSVNPlugin插件,實現(xiàn)了在Web環(huán)境下對客戶端的存取操作,主要包括checkout、update、commit、delete、add、rename等SVN客戶端的常用操作,這些功能主要通過SVNkit里面的High Level API接口的doStatus、doCommit、doAdd、doUpdate、doDelete等方法實現(xiàn)。

LiveSVNPlugin插件功能原理的結(jié)構(gòu)類圖如圖2所示。

圖2 LiveSVNPlugin和SVNKit功能結(jié)構(gòu)對應(yīng)圖

3 LiveSVNPlugin插件簽名與部署

在LiveSVNPlugin部署方面采用的是JNLP技術(shù)。JNLP(Java Network Launching Protocol,Java網(wǎng)絡(luò)加載協(xié)議)是Java提供的一種可以通過瀏覽器直接執(zhí)行Java應(yīng)用程序的途徑,它可以在客戶端瀏覽器上運(yùn)行Java小應(yīng)用程序。JavaWeb應(yīng)用以JNLP的方式發(fā)布,版本升級,不需要再向所有用戶發(fā)布版本,只需要更新服務(wù)器的版本,這與傳統(tǒng)的Windows應(yīng)用的版本發(fā)布是完全不同的,使Java應(yīng)用程序有了Web應(yīng)用的優(yōu)點。

由于Java Applet程序可以從客戶端瀏覽器上下載到本地客戶端,然后在客戶端運(yùn)行,這樣就導(dǎo)致惡意的Applet程序也有可能會破壞客戶端系統(tǒng)。并且因為Java安全機(jī)制的限制[3],Java把Applet限定運(yùn)行在瀏覽器規(guī)定的“沙盒(SandBox)”環(huán)境區(qū)域中,在這個區(qū)域中不能實現(xiàn)Applet對本地文件的存取,因此我們需要對Applet進(jìn)行簽名認(rèn)證,使簽名后的Applet具有普通Java應(yīng)用一樣的權(quán)限,未簽名的Applet依然運(yùn)行在“沙盒”中,這樣可以使客戶端的安全問題得到解決。Applet數(shù)字簽名技術(shù)就是為突破JRE安全機(jī)制的限制而提出的解決方案。在本系統(tǒng)中主要是通過Applet實現(xiàn)SVN操作來完成對遠(yuǎn)程工作區(qū)文件的存取。

3.1在HTML頁面嵌入Applet標(biāo)簽

<applet name="SVNApplet"width="0"height="0">

<PARAM NAME="jnlp_href"VALUE="svn/svnApp let. jnlp">

</applet>

3.2JNIP部署Applet

采用JNLP文件[6]部署Applet,除了具有簡化HTML代碼,把Applet需要Logo,提示信息,引用的第三方插件等資源封裝到一個JNLP文件中,對Applet維護(hù)方便,同時可以自動下載并安裝最新JRE版本的功能。部署過程如下:

其中,SVNApplet.jar是通過MyEclipse把SVNApplet.class打的JAR包也就是上文提到的LiveSVNPlugin插件),其他JAR包是系統(tǒng)所引用的第三方插件包,<all-permissions/>表示允許所有簽名的Applet操作。

3.3Applet數(shù)字簽名[4]

使用JDK自帶的keytool和jarsigner工具對生成的SVNApplet.jar文件簽名。

步驟如下:

(1)將Applet class文件打成jar包,命令如下:使用JAR打包命令:jar cvfm SVNApplet.jarmanifest.mf*.class lib*.jar

或MyEclpse自帶打包工具到處JAR包

(2)生成秘鑰庫,這個過程需要輸入密匙庫的密碼,命令如下:

keytool-genkey-keystore SVNApplet.keystore-alias SVNApplet

(3)生成簽名時所要用的證書,命令如下:

Keytool-export-keystore SVNApplet.keystore-alias SVNApplet-file SVNApplet.cer

(4)用上一步產(chǎn)生的證書對jar文件進(jìn)行簽名,命令如下:

jarsigner-keystore SVNApplet.keystore SVNApplet.jar SVNApplet

簽名結(jié)果如圖3所示:

圖3 LiveSVNPlugin簽名結(jié)果圖

如果看到“jar已簽名”,如圖1所示,并且新生成SVNApplet.keystore和SVNApp let.cer兩個文件,說明LiveSVNPlugin簽名成功。

隨著瀏覽器和JRE的不斷升級,Java的安全機(jī)制也不斷變化,從Java 7 Update 51開始,Java不在支持除Sun公司以外其他機(jī)構(gòu)和個人發(fā)布的簽名證書。為解決這一問題,Java引入了“例外站點”列表功能,在Java控制臺的例外站點中加入項目URL地址即可。運(yùn)行項目,初次運(yùn)行會彈出簽名證書認(rèn)證窗口,如圖4所示。

圖4 RIASVN項目LiveSVNPlugin安全驗證圖

其中RIASVN是項目名稱,LiveSVNPlugin在詳細(xì)信息中可以看到。如果看到簽名的姓名是自己信任的,則選中“接受”,然后點“運(yùn)行”。第一次運(yùn)行該網(wǎng)頁會有證書提示,選擇運(yùn)行以后再運(yùn)行此網(wǎng)頁將不再提示驗證信息。如果選擇“取消”,則只可以瀏覽網(wǎng)頁,不可以進(jìn)行存取等其他交互操作,下次再運(yùn)行此網(wǎng)頁,仍然還會有證書確認(rèn)信息彈出。

在Windows Java控制臺查看緩存文件,若看到插件LiveSVNPlugin,右鍵查看到LiveSVNPlugin詳細(xì)信息,則說明JNLP部署LiveSVNPlugin成功完成,如圖5所示:

圖5 控制臺應(yīng)用緩存圖

4 結(jié)語

SVN是近年來崛起的版本管理軟件系統(tǒng),是使用最廣泛的版本管理軟件之一,而且功能齊全,但是隨著Web技術(shù)的不斷發(fā)展,為了適應(yīng)在線管理文件的需要,版本控制軟件在富互聯(lián)網(wǎng)(RIA)上的需求越來越多,SVN在RIA上有很大的研究價值和發(fā)展空間,本文重點研究SVN在互聯(lián)網(wǎng)上的應(yīng)用而開發(fā)的LiveSVNPlugin插件,實現(xiàn)了在Web上所具有的SVN的基本功能,主要有checkout、update、commit、delete、add、rename,資源空間和本地資源交互(上傳和下載)等。和TortoiseSVN的強(qiáng)大功能相比還有很大差距,相關(guān)工作還需要繼續(xù)探索,同時為了服務(wù)于Web,SVN版本倉庫在互聯(lián)網(wǎng)上的遠(yuǎn)程管理也必將會是SVN以后的研究重點。

[1]Rich Internet Application高級編程:后AJAX時代,清華大學(xué)出版社,2009.01

[2]使用Subversion進(jìn)行版本控制,北京出版社,2009

[3]朱連章.通過Applet與Servlet通信突破Applet的限制.微計算機(jī)信息,2004(4)

[4]劉丹,褚蓓蓓.用Java語言實現(xiàn)電子政務(wù)中的數(shù)字簽名[J].計算機(jī)安全,2008(9),85-87

[5]TMate.SVNKit[CP/OL].[2014-6-18].http://www.svnkit.com/.

[6]ReneW.Schmidt.Java Network Lanching Protocol and APISpecification[M].California,2001.

LiveConnect;SVN;SVNKit;Applet Digital Signature;JNLP

Design and Developm entof SVN Java Web Plug-in Based on LiveConnect

ZHOUWen-feng,REN Hong-min

(College of Information Engineering,ShanghaiMaritime University,Shanghai 201306)

With the rapid development of computer and network technology,the Internet has increasingly become the default platform.Nowadays, Subversion is amostwidely used,free and open source version control system.The working place of SVN is only limited to client's compute,it can'tmeet the needs ofmanagement files in theWeb.So,focuses to develop a plug-in that called LiveSVNPlugin tomanage resource files based on SVN and LiveConnect technology,and it has achieved the basic functions of SVN.The LiveSVNPlugin can be achieved on the workspace for file management in the Web environment,flexible operation,and can be easily embedded in other Java Web projects tomake itused widely.

1007-1423(2015)16-0051-05

10.3969/j.issn.1007-1423.2015.16.012

周文峰(1987-),男,安徽渦陽人,碩士研究生,研究方向為數(shù)據(jù)庫開發(fā)與應(yīng)用、軟件開發(fā)與系統(tǒng)架構(gòu)

任洪敏(1969-),男,上海浦東人,博士,副教授,研究方向為軟件體系結(jié)構(gòu)、軟件復(fù)用、軟件項目管理

2015-04-29

2015-05-19

猜你喜歡
功能
拆解復(fù)雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
深刻理解功能關(guān)系
鉗把功能創(chuàng)新實踐應(yīng)用
關(guān)于非首都功能疏解的幾點思考
基于PMC窗口功能實現(xiàn)設(shè)備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達(dá)功能
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 欧美成人区| 国产乱码精品一区二区三区中文 | 欧美亚洲一区二区三区导航| 天天躁狠狠躁| 亚洲av无码人妻| 免费A级毛片无码免费视频| 伊人天堂网| 福利在线免费视频| 激情综合婷婷丁香五月尤物| 免费国产高清视频| 白浆视频在线观看| 国产一级毛片高清完整视频版| 亚洲人成在线免费观看| 久久精品人妻中文系列| 中文字幕有乳无码| 在线无码九区| 欧美日韩成人在线观看| 国产av无码日韩av无码网站| 精品国产www| 久草视频一区| 亚洲一区二区三区国产精华液| 九九九久久国产精品| 国产欧美视频在线| 乱系列中文字幕在线视频| 2020极品精品国产| 精品欧美一区二区三区在线| 日本黄色不卡视频| 国产精品久久久久久久久久久久| 99re在线免费视频| 国产乱子伦视频在线播放| 国产美女91视频| 日韩av无码DVD| 99久久人妻精品免费二区| 又爽又大又光又色的午夜视频| 中文字幕亚洲乱码熟女1区2区| 欧美a级在线| 中国一级特黄大片在线观看| 久久亚洲高清国产| 欧美成人综合在线| 国产区人妖精品人妖精品视频| 国产91丝袜在线播放动漫 | 99999久久久久久亚洲| 国产99视频精品免费观看9e| 18禁不卡免费网站| 国产三级毛片| 欧类av怡春院| 欧美综合成人| 国产精品毛片在线直播完整版| 色屁屁一区二区三区视频国产| 人妻中文久热无码丝袜| 精品国产免费观看一区| 制服丝袜在线视频香蕉| 日韩一级二级三级| 欧美不卡视频在线观看| 国产精品吹潮在线观看中文| 亚洲国内精品自在自线官| 欧美综合区自拍亚洲综合天堂| 免费观看欧美性一级| 一本大道香蕉久中文在线播放| 国产色伊人| 99视频国产精品| 99尹人香蕉国产免费天天拍| 亚洲欧洲国产成人综合不卡| www.91在线播放| yjizz国产在线视频网| 婷婷色中文网| 亚洲午夜国产精品无卡| 国产人免费人成免费视频| 国产精品永久不卡免费视频| 日韩欧美国产成人| 一级毛片中文字幕| 欧美www在线观看| 亚洲av无码久久无遮挡| 97免费在线观看视频| 亚洲成人在线网| 伊人成人在线视频| 欧美a网站| 丝袜久久剧情精品国产| 五月激情婷婷综合| 999精品在线视频| 亚洲国产av无码综合原创国产| 成人亚洲天堂|