|
JNLP协议使得应用软件一旦发布后自动更新和维护成为可能,对于下载后的软件,如果涉及到访问本地资源,就必须对相应的jar文件数字签名。以发布 NotePad.jar 为例,分步骤来说明application的签名和发布。 假使我们有一个NotePad的Java程序需要发布。

1)在源程序的src目录下运行dos,使用java自带的签名工具产生签名文件,按照提示一步步完成产生key。程序代码:
keytool -genkey -keystore notepadKeyFile -alias notepadKey 其中,notepadKeyFile是生成的文件名称, notepadKey是别名。可以查阅到相应的证书信息。

2)修改ant使用的build.xml文件,加入如下类似的一个task。程序代码:
<target name="all" depends="dist" description="generate Key to sign jars"> <signjar alias="notepadKey" storepass="hellojava" keypass="hellojava" keystore="${src.dir}/notepadKeyFile" verbose="true" > <fileset dir="${dist.lib}"> <include name="*.jar" /> </fileset> </signjar> </target> 其中storepass和keypass就是在生成key的时候设置的keystore的密码和notepadKey的主密码,这里都设为hellojava,需要签名的class文件为${dist.lib}目录下的所有jar。
3)建立notepad.jnlp文件,它其实是个xml格式的发布文件。程序代码:
<?xml version="1.0" encoding="utf-8" ?> <jnlp spec="1.0+" codebase="http://www.zigzagsoft.net/main/down" href="notepad.jnlp"> <information> <title>NotePad V0.1</title> <vendor>www.ZigzagSoft.net</vendor> <description>NotePad V0.1</description> <description kind="tooltip">www.ZigzagSoft.net (FreeWare)</description> <offline-allowed/> </information> <security><!--权限设置--> <all-permissions/> </security> <resources> <j2se version="1.4+"/> <jar href="NotePad.jar"/> </resources>
<application-desc main-class="net.drunkworm.project.notepad.NotePad"><!--主类--> </application-desc> </jnlp> 4)然后到了正式发布的时候了,将notepad.jnlp和NotePad.jar放到网络服务器目录下即可。用户只要一次下载notepad.jnlp,以后的软件更新全部自动完成,你可以在Java Web Start的面板中看到NotePad的相关信息,用户每次运行NotePad,他自动会从源地址检查是否更新。

备注:
客户端运行环境:Java Web Start,你可以编写一定的Javascript代码来判断客户端有没有安装JWS,提示用户安装。 点击运行实例: http://www.zigzagsoft.net/main/down/notepad.jnlp 图示为发布后用户下载时出现的界面
下载完成后将出现NotePad应用程序的界面。

|