| |
传统情况下,通过网络发布软件需要用户在web上查找和下载,然后在系统中存放并执行安装程序。执行安装程序后,将提示指定安装路径和安装选项,例如完全、典型或最小安装。这通常是一个耗时、复杂的任务,而且在安装软件的每个新版本时都必须重复进行此任务。 java web start(jws)是sun公司推出的新的一种基于java技术的应用程序发布技术。它是连接计算机和 internet 的便捷通道,并且允许用户在完全脱离web 的情况下运行和管理应用程序。jws提供一次点击就激活应用程序的简易方法,并保证总是运行最新的版本,从而可消除复杂的安装或升级过程。jws技术是一种面向web的应用程序部署解决方案,使用jws技术的好处如下: 1. 高效交互的用户界面,可与传统应用程序(如文字处理和电子表格软件)相媲美; 2. 较低的带宽需求,应用程序无须在每次单击时都与web服务器进行连接,它可以缓存已经下载的信息,在低速连接上实现更好的交互; 3. jws将下载的所有文件缓存在本地计算机上,支持脱机使用; 4. 在每次启动时,jws将检查web服务器是否有应用程序的更新版本,如果有将自动下载和启动。这样,应用程序将自动更新,没有复杂的升级过程。 jws的实现 为了实现jws软件发布、自动更新功能,需要在服务器端和客户端进行一些配置。其中客户端配置相对比较简单,只需要安装jws客户端软件即可。该软件可以从http://java.sun.com/products/javawebstart下载安装。如果本机安装了jdk1.4,因其内部已经内置jws,就不必另外下载了。 客户端正确安装jws以后,就将基于java网络加载协议(jnlp)从浏览器或者桌面加载应用程序。如果服务器端有更新版本的应用出现时, 客户端将自动下载最新的版本,并在本机缓存应用程序需要的类,以加速启动速度。无论是application 还是applet,应用程序都以安全的方式使用诸如文件系统这样的本机资源。 服务器端的配置相对复杂一些,它有几个关键点需要注意: 1.为了使java程序(application 或applet)的jar文件能被jws执行,必须为java程序创建一个网络语言协议(java networking language protocol,jnlp)文件。jnlp是一个为java程序提供基本元素和描述的xml文件,它的后缀名为.jnlp。通过jnlp文件,web服务器可以找到要发布的jar文件和其在web服务器上的存放位置,以及发布文件的一些说明。所以,正确编写jnlp是jws配置的关键所在。jnlp语法比较简单,可以参考jws说明文档。 2.因为java程序需要从网上传输、下载和运行,所以分离的class文件是很难保证传输的完整性,这样必须将java应用程序或applet打包,生成jar文件,并放在web服务器的相应目录下。 3.修改web服务器配置,增加web服务器的关联类型,使web服务器能够识别和运行.jnlp文件。以tomcat为例,找到tomcathome/conf下的web.xml文件,在其中添加application/x-java-jnlp-file ,tomcat就可以支持jnlp文件了。 使用jbuiler6快速实现jws 尽管jws的应用有许多优点,但初学者刚刚接触时还是有一种无从下手的感觉。这时,可以使用jbuider 6的jws相关功能,实现java程序打包和自动生成.jnlp文件,然后对该文件进行修改,再安装在web服务器上。以下为建立login jws的操作步骤: 1.在jbuilder 6下建立名字为logconsole的项目,在该项目中加入一个名为log的applet,编译并运行,以保证logconsole.log.class工作正常,这一步与编写普通java程序完全一样,在此不再做进一步介绍。 2.使用archive builder工具将class文件打包,步骤如下: (1)在jbuilder6工具栏中选择wizard|archive builder,弹出“archive builder”5个步骤中的第一步—选择文档类型,按缺省设置选择“basic”,点击“next”。 (2)选择要建立的文档名及文件名,如图1所示。文档名设为logconsole,文件名按缺省值即可。 3)在文档中加入所需的class文件以及相关的类和资源文件。点击“add classes”键,选择刚才生成的logconsole.log.class,该class文件名就会出现在“required classes,packeges,resources:”文本框中,点击“next”。 (4)选择类库的关联性,这是最容易出错的地方,如图2所示。一般在项目设置中,我们可能增加了许多类库,像图中的mysql驱动程序。因为本程序并不需要这些类库,所以一定要把它们设置为“不包括”,否则,最终生成的jar文件会非常大 5)生成jar文件的最后一步是设置清单(manifest)选项,注意一定要选上“建立一个清单”和“在文档中包含清单”这两项。点击“finish”键,jar文件的配置文件就生成了,然后点击“project|rebuilder project”工具项,就可以最终生成jar文件了。 3.使用jbuilder 6生成jnlp文件。 (1)在jbuilder6“file|new|web”页面上选择“web start launcher”,弹出窗口如图3所示,“name”栏中输入“log”,“jar file”中选择我们刚才生成的logconsole.jar,“main class”中指定jar文件中的主类(程序入口),在本例子中只有一个类,就选择logconsole.log,点击“next”,进入下一步。 (2)如图4所示,主要是输入一些信息,它将会在客户平台启动jws时显示出来。点击“finish”,jbuilder 6就会自动生成log.jnlp文件了。 jws 应用实例 笔者使用java语言设计了一套网关型宽带网计费软件,分为服务器端和客户登录程序。服务器端的功能是根据应用客户登录程序发送过来的用户名、密码及客户端ip地址,来实现身份认证。如果认证成功,服务器开放客户端的ip地址,开始计费。在设计时,如何将登录程序既能安装在校园网近3000余台的电脑上,同时又能很方便地升级登录程序让笔者颇费脑筋。最终选用jws技术顺利解决了此问题,并且取得了非常好的效果。具体步骤如下: 1. 在login网页上提示用户下载并安装jws 客户端软件。 2. 使用java编写客户端登录程序(applet),将所有.class文件打包并生成.jar文件。 3. 采用tomcat作为web服务器,在%tomcathome%/conf下的web.xml文件中添加 “ application/x-java-jnlp-file ”一行,使tomcat支持jnlp文件。在%tomcathome%/webapps/proxy/web-inf/下的webapp.properties 文件中设置welcomefiles=log.jnlp,确保.jnlp文件作为缺省主页。 4.使用jbuiler6生成log.jnlp文件,将该文件安装在tomcat的相应目录下,整个工作就完成了。log.jnlp内容如下: log nit netcenter 其中,.jnlp文件是jws 配置中的关键。如果程序不能正常发布,绝大多数问题出在jnlp文件上。在本文实例log.jnlp中,最关键的语句用黑体标出,初学者可以在jbuilder 6的jnlp生成向导中有意调整几次,生成几个文件,并进行比较,就能够明白了。
|
|