五、使用自动下载特性
Java Web Start 1.2 提供的“一次点击”自动下载安装的功能使得需要Java Web Start的终端用户更易使用。
说明:此特性只在Microsoft Windows平台支持。
为了使用这个功能,开发者必须在其应用所驻留的web页面中提供一些脚本。这些脚本将用于判断终端用户的浏览器是Netscape Navigator 还是 Internet Explorer ,并且检测客户机系统中是否安装有Java Web Start。根据这些检测结果,应用所在web页面的其他脚本将开始自动下载和安装Java Web Start,随后将下载和安装应用程序。
NetScape Navigator中使用的JavaScript
以上脚本检测客户浏览器是否是IE,如果是的话,变量isIE被设置为"true",否则的话,如果为Netscape Navigator 浏览器,此变量设为"false"。如果浏览器为Netscape Navigator 的话,脚本将检测MIME类型来判断是否安装有任何版本的Java Web Start。如果是的话,将设置javawsInstalled 和 javaws12Installed 两个变量为1。这段脚本不能确定具体何种版本的Java Web Start已经安装。
Internet Explorer 中使用的VBScript
设置IE浏览器中变量的VBScript脚本将紧随前面的JavaScript脚本。
如果前面的JavaScript脚本中设置了isIE=true,也就是说终端用户的浏览器是IE的话,以上VBScript将会执行,以上VBScript将会试图创建JavaWebStart.dll中的"isInstalled" COM 对象,这个对象能说明两件事:
1、客户机是否安装有最新的1.2版本Java Web Start.
2、客户机是否安装有任意版本的Java Web Start,而不关心版本数。
如果安装有1.2版,javawsInstalled 和 javaws12Installed 全部为1,如果安装有1.2以前版本,javawsInstalled为1、javaws12Installed为0;如果没有安装任何版本的Java Web Start的话则全为0。
初始化自动下载
以上两段脚本执行后,javawsInstalled 和 javaws12Installed应该已经设置为1或0了。
余下的JavaScript根据这些信息将决定是否初始化java web start的自动下载或者提供一个指向Java Web Start应用的jnlp文件的超级链接。(以下示例假定开发者的应用部署在www.yyy.zzzweb服务器上):
如果javawsInstall 是1,说明客户机已有Java Web Start可用,脚本将生成一个指向jnlp文件的连接。如果客户机没有安装Java Web Start,脚本将提供一个指向位于java.sun.com web站点上的PluginBrowserCheck 程序。PluginBrowserCheck 核对客户是否使用windows平台的IE。如果是的话,PluginBrowserCheck 将客户浏览器导向http://www.yyy.zzz/download.html.
download.html文件是开发者放置在web服务器上的文件。它包含有特殊的OBJECT和PARAM标记,这些标记用来下载一个Java Web Start的自动安装程序到客户机上。与Java Web Start一起还有一个ActiveX控件会下载导客户机上。这个ActiveX将使用新安装的Java Web Start来启动应用。
以下是示例download.html文件:
这里的OBJECT标记将获取一个包含Java Web Start1.2自动安装程序的cab文件。此cab文件不包含Java Runtime Environment(Java运行时环境),所以在你是用自动下载特性之前需要安装有Java Runtime Environment。PARAM标记指定你的java web start应用程序的jnlp文件,这样的话,在Java Web Start在客户机上安装后能够启动你的Java Web Start应用程序。
备注:要设置这个文件使之下载全部的jre,而不只是Java Web Start 1.2的话,用以下的示例HTML代码替换前面的OBJECT 标记:
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
这样将会初始化自动下载任务,如果客户机还没有安装Java Web Start 1.0.1x的话。如果已经安装有Java Web Start 1.0.1x,要强制执行自动下载的话,在CODEBASE中使用以下URL:
http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab#Version=1,0,0,2
参考前面的JavaScript脚本示例:
如果PluginBrowserCheck检测到客户机不是使用MS平台的IE的话,客户机将被重定向到java.sun.com上面的shell脚本,此shell脚本将为Java Web Start提供一个相应的手工下载页面。