基于LiveConnect技术的SVN Java Web插件的设计与开发

2015-09-18 05:54周文峰任洪敏
现代计算机 2015年13期
关键词:插件浏览器应用程序

周文峰,任洪敏

(上海海事大学信息工程学院,上海201306)

基于LiveConnect技术的SVN Java Web插件的设计与开发

周文峰,任洪敏

(上海海事大学信息工程学院,上海201306)

随着计算机和网络技术的高速发展,互联网已经日益成为人们默认的工作环境,而目前使用最为广泛的Subversion版本控制系统,只能在客户端工作副本上工作,满足不了人们在Web上管理文件的需求,因此重点研究基于LiveConnect技术和SVNKit技术开发一款实现SVN基本功能的SVN JavaWeb插件,该插件可以在Web环境上实现对工作区文件的管理,操作灵活,并且可以轻松嵌入其他JavaWeb项目中,以使该插件可以广泛使用。

LiveConnect;SVN;SVNKit;Applet数字签名;JNLP

0 引言

自20世纪70年代,配置控制理论第一次被提出以来,在版本控制工具领域中出现了很多配置管理工具如CVS、VSS、Git、SVN等,其中CVS是很多中小软件公司使用最频繁的版本控制工具,但由于它不能对目录实现版本控制,不能记录目录的版本历史,在软件开发中不能实现文件的“移动”、“重命名”、“拷贝”等操作,使之逐渐被SVN(Subversion)取代。2000年2月, CollabNet公司启动SVN项目,它的目标就是实现CVS的绝大部分功能,并充分考虑现有的CVS用户,使用方式上类似CVS。由于SVN的源代码是公开的,所以最近几年来,Subversion在国内发展很迅速,被广泛应用于大小软件公司,对各种资源文件进行管理。Subversion目前使用最为广泛的开源版本控制系统,和客户端TortoiseSVN一起管理工作区文件。它的核心是版本库,储存所有随时间而变化的数据。

随着Web技术的不断发展,互联网已经日益成为人们默认的工作平台,传统的客户端工作区及管理客户端工作区文件的版本控制软件因不能满足人们在Web环境上工作的需求而逐渐向互联网上转移。因此,本文开发的LiveSVNPlugin能够解决在Web工作区管理文件的问题,且是采用最新的RIA(Rich Internet Application,富互联网应用)[1]技术开发的Java Web插件。RIA既具有传统B/S结构的Web应用在开发、部署和维护方面的便利优势,也具有桌面应用在交互能力和表现能力上所具有的美好体验。LiveSVNPlugin采用了最新的Web开发技术,如HTML5、CSS3、JQuery、LiveConnect等,操作灵活,集成方便,很容易嵌入其他Web项目中,用于实现对Web工作区上文件的版本控制。该插件实现了Subversion客户端的基本功能,相对于目前使用的客户端版本控制软件,在Web领域具有很大使用价值,必定会是版本控制系统领域的一个突破。

1 基于LiveConnect技术的LiveSVNPlugin框架

1.1LiveConnect技术介绍

LiveConnect技术[1]是Web浏览器允许Java和JavaScript在Web页面内彼此交互沟通的一个新特性。它是目前实现Java App let应用的一个DOM接口,允许每个程序操纵其包含的网页,包括Java类调用JavaScript方法和访问JavaScript环境及JavaScript访问Java对象和调用Java方法。LiveConnect技术提供了两个Java Applet的API包用于与JavaScript通信。这两个包是netscape.javascript和netscape.plugin。其中netscape. javascript在客户端和服务器端上都可以使用,包含两个类:

netscape.javascript.JSObject和netscape.javascript. JSException,但netscape.plugin只能使用在客户端,包含一个类:netscape.plugin.Plugin。

虽然LiveConnect通过连接JavaScript与Java可以创建非常强大的应用程序,但是LiveConnect并不完全支持所有浏览器,目前,仅Netscape浏览器和Mozilla Firefox完全支持这个特性。通过LiveConnect技术可以开发出各种浏览器和客户端交互的丰富的应用程序。Applet与JavaScript的具体通信过程如下:

(1)JavaScript调用Java Applet:

window.document.SVNApplet.SVNFunction();

其中,SVNApp let是Java Applet应用,SVNFunction()是SVNApplet里面的public类型的方法。

(2)Java Applet调用JavaScript方法:

//获取JavaScript窗口句柄,引用当前文档窗口this值object类

JSObjectwin=JSObject.getWindow(this);

//调用页面上的js方法showMsg()

Object obj[]=new Object[1];

obj[0]=info;

win.call("showMsg",obj);

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

function showMsg(obj)

{

......

}

1.2LiveSVNPlugin功能结构图

LiveSVNPlugin插件是一款基于LiveConnect技术的Java Web插件,它的功能结构图如图1所示。

2 基于SVNkit技术的LiveSVNPlugin技术实现

2.1SVNkit技术介绍

SVNKit(JavaSVN)[5]是一个完全基于Java的访问Subversion版本控制系统的一个客户端工具库,它具有很高的独立性,具有跨操作系统的特性。Subversion是一家领先的和快速增长的开源版本控制系统,而SVNKit使Subversion更接近Java世界!SVNKit是纯粹的Java工具包,它实现了Subversion所有功能,提供了在Java应用程序上操作Subversion工作副本及访问和操作Subversion版本库的一切API接口,并且兼容Subversion的最新版本,同时也支持SSH、HTTP、SVN和文件传输协议。

SVNKit对外提供的API编程接口中,主要有两个High Level API和Low Level API,其中,通过High Level API接口,几乎可以实现Subversion的所有操作,包括检出、更新、提交、查看历史、比较差异和浏览版本库等。Low Level API接口封装了Subversion版本库的连接细节,常用它来连接和直接操作版本库。通过SVNKit技术,可以开发出自己所需要的具有SVN特色各种应用程序。

图1 LiveSVNPlugin功能结构图

2.2LiveSVNPlugin内部功能结构类图

在本项目中,登录用户可以看到远程工作空间上自己有权限的目录和文件,并可以看到这些目录和文件受(.svn)控制的状态。它们的实现是基于异步加载的方式和SVNKit的相关方法在Servelet里面实现的,包括ourClientManager.getStatusClient().doStatus和manager.parseRootPaths(new User(userName),null))等方法。

通过LiveSVNPlugin插件,实现了在Web环境下对客户端的存取操作,主要包括checkout、update、commit、delete、add、rename等SVN客户端的常用操作,这些功能主要通过SVNkit里面的High Level API接口的doStatus、doCommit、doAdd、doUpdate、doDelete等方法实现。

LiveSVNPlugin插件功能原理的结构类图如图2所示。

图2 LiveSVNPlugin和SVNKit功能结构对应图

3 LiveSVNPlugin插件签名与部署

在LiveSVNPlugin部署方面采用的是JNLP技术。JNLP(Java Network Launching Protocol,Java网络加载协议)是Java提供的一种可以通过浏览器直接执行Java应用程序的途径,它可以在客户端浏览器上运行Java小应用程序。JavaWeb应用以JNLP的方式发布,版本升级,不需要再向所有用户发布版本,只需要更新服务器的版本,这与传统的Windows应用的版本发布是完全不同的,使Java应用程序有了Web应用的优点。

由于Java Applet程序可以从客户端浏览器上下载到本地客户端,然后在客户端运行,这样就导致恶意的Applet程序也有可能会破坏客户端系统。并且因为Java安全机制的限制[3],Java把Applet限定运行在浏览器规定的“沙盒(SandBox)”环境区域中,在这个区域中不能实现Applet对本地文件的存取,因此我们需要对Applet进行签名认证,使签名后的Applet具有普通Java应用一样的权限,未签名的Applet依然运行在“沙盒”中,这样可以使客户端的安全问题得到解决。Applet数字签名技术就是为突破JRE安全机制的限制而提出的解决方案。在本系统中主要是通过Applet实现SVN操作来完成对远程工作区文件的存取。

3.1在HTML页面嵌入Applet标签

<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维护方便,同时可以自动下载并安装最新JRE版本的功能。部署过程如下:

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

3.3Applet数字签名[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)用上一步产生的证书对jar文件进行签名,命令如下:

jarsigner-keystore SVNApplet.keystore SVNApplet.jar SVNApplet

签名结果如图3所示:

图3 LiveSVNPlugin签名结果图

如果看到“jar已签名”,如图1所示,并且新生成SVNApplet.keystore和SVNApp let.cer两个文件,说明LiveSVNPlugin签名成功。

随着浏览器和JRE的不断升级,Java的安全机制也不断变化,从Java 7 Update 51开始,Java不在支持除Sun公司以外其他机构和个人发布的签名证书。为解决这一问题,Java引入了“例外站点”列表功能,在Java控制台的例外站点中加入项目URL地址即可。运行项目,初次运行会弹出签名证书认证窗口,如图4所示。

图4 RIASVN项目LiveSVNPlugin安全验证图

其中RIASVN是项目名称,LiveSVNPlugin在详细信息中可以看到。如果看到签名的姓名是自己信任的,则选中“接受”,然后点“运行”。第一次运行该网页会有证书提示,选择运行以后再运行此网页将不再提示验证信息。如果选择“取消”,则只可以浏览网页,不可以进行存取等其他交互操作,下次再运行此网页,仍然还会有证书确认信息弹出。

在Windows Java控制台查看缓存文件,若看到插件LiveSVNPlugin,右键查看到LiveSVNPlugin详细信息,则说明JNLP部署LiveSVNPlugin成功完成,如图5所示:

图5 控制台应用缓存图

4 结语

SVN是近年来崛起的版本管理软件系统,是使用最广泛的版本管理软件之一,而且功能齐全,但是随着Web技术的不断发展,为了适应在线管理文件的需要,版本控制软件在富互联网(RIA)上的需求越来越多,SVN在RIA上有很大的研究价值和发展空间,本文重点研究SVN在互联网上的应用而开发的LiveSVNPlugin插件,实现了在Web上所具有的SVN的基本功能,主要有checkout、update、commit、delete、add、rename,资源空间和本地资源交互(上传和下载)等。和TortoiseSVN的强大功能相比还有很大差距,相关工作还需要继续探索,同时为了服务于Web,SVN版本仓库在互联网上的远程管理也必将会是SVN以后的研究重点。

[1]Rich Internet Application高级编程:后AJAX时代,清华大学出版社,2009.01

[2]使用Subversion进行版本控制,北京出版社,2009

[3]朱连章.通过Applet与Servlet通信突破Applet的限制.微计算机信息,2004(4)

[4]刘丹,褚蓓蓓.用Java语言实现电子政务中的数字签名[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-),男,安徽涡阳人,硕士研究生,研究方向为数据库开发与应用、软件开发与系统架构

任洪敏(1969-),男,上海浦东人,博士,副教授,研究方向为软件体系结构、软件复用、软件项目管理

2015-04-29

2015-05-19

猜你喜欢
插件浏览器应用程序
自编插件完善App Inventor与乐高机器人通信
删除Win10中自带的应用程序
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
谷歌禁止加密货币应用程序
基于jQUerY的自定义插件开发
基于Revit MEP的插件制作探讨
插件体系结构软件的原理和实现
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序