Java Web Start(以下简称JWS)是SUN提供的一种通过Web来部署和发布Java 程序的新技术,它既可以用来发布Application,也可以用来发布Applet,它仅在第一次运行时下载程序,以后的事情,就全全交给JWS,包括版本的自动更新和维护。这是我们曾经梦寐以求的事情,程序运行在客户端(本地运行,当然有足够的速度),但不用去安装配置客户端,也不用去考虑版本升级后对客户端的维护,这就是JWS提供给我们的好处之一。
本文所应用的平台是JDK5.0+tomcat5.5
Tomcat 3.2.1 以上版本,需要修改找到TOMCAT_HOME/conf下的web.xml文件,在其中添加
application/x-java-jnlp-file
在tomcat 5.5版本安装后已经就默认增加了对jnlp文件的支持,不用修改web.xml。
使用eclipse等工具创建一个web project,将要发布的jar文件拷贝到下面。比如apps/lib
l 开发程序,将程序打成一个或多个jar文件
l 如果应用程序会用到本地资源,比如文件、目录等,则需要对jar文件进行签名。通过以下的步骤给程序签名:
i. 首先确保安装了java2,在命令提示符下
C:/Webapps> keytool -genkey -keystore myKeystore -alias jwstest (jwstest
是对应的key value的key)
会提示你输入用户名、密码、公司、省、国家等,不用管,随意输入一些就可以了,但是必须要记住密码,不要忘了,否则就得重新签名了。在这一堆问题的最后,会提示你保存[否],这里输入Y即可,你就可以看到在本地产生了一个myKeystore的文件。
ii.
如果你想察看一下刚才生成的myKeystore文件的内容,可以使用下面这句话:
C:/Webapps> keytool -list -keystore myKeystore
可以看到内容。
iii.
对需要签名的jar文件签名。
C:/Webapps> jarsigner -keystore myKeystore xxxxxx.jar jwstest (jwstest是你刚才产生的key,可以在一个文件中有多个key value)
签名过程如下:
会出现一个警告:签名6个月后失效。
iv.
如果有不同目录的多个jar文件需要签名,则需要将myKeystore文件拷贝到要签名的目录,注意,要采用相同的myKeystore文件,否则会产生签名不一样的情况。另外,在签名过程中,如果录入的jar文件不存在,不会给出任何提示,这点需要注意。
部署应用程序
在eclipse中,将web应用发布,检查tomcat下面是否已经发布成功,并且检查是否有签名。以后再更新jar文件后,也需要签名后再发布。
编写JSP页面
|
编写JNLP文件
spec="1.0+"
codebase="http://192.168.71.214:8080/jwstest/apps"
href="jwstest.jnlp">
这个文件中,要注意的是
文件内容格式的说明:
spec:必须是1.0及以上版本,这里用1.0+,不需修改。
codebase:资源的URL,是JNLP指向各连接的起始处,需自行修改。
Href:JNLP文件相对codebase的存放位置,和JNLP文件的全名,需自行修改。
Title:发布的应用程序简单标题,需自行修改。
Vendor:发行商信息,可以写上你的大名,需自行修改。
Homepage:存放有关应用程序的相关文档的URL,如help文件等,可有可无。
Description:对应用程序的描述,可以有多对
Icon:用户下载你的应用程序后,在JWS里显示的图标的URL,应是gif或jpeg格式。需自行修改。
Offline-allowed:选择项,允许用户离线运行应用程序,一般都会有,不用修改。
选择项,如果没有指明
如果设定为
main-class:应用程序运行启动的主类
至此,你已经完全构建了运转JWS的各部件。
发布和测试
前面我们已经准备好了需发布的应用程序的jar包,也写好了用来访问的jsp文件和服务器端的核心jnlp文件。
第一步:在JWSTest下新建目录jsp。把index.jsp拷入jsp目录。
第二步:把jnlp文件直接拷入apps目录下。
第三步:在浏览器里输入:http://localhost:8080/JWSTest/jsp/index.jsp 即可访问到jsp页面。页面应出现JWSTest字样。
第四步:点击JWSTest,连接到apps下的JWSTest.jnlp文件,JWS启动,开始下载你发布的应用程序。
第五步:下载完毕,直接运行即可。以后,你也可以直接运行JWS客户端里已下载的应用程序。
通过上面的讲述,你一定能体会到JWS的易用性。或许事情并没有那么简单,以我的使用经验,还会有许多问题出现,在这里挑几个经常出现的问题,给出相应解决方法,让大家少走弯路,而享受更多的乐趣。
问题一:JWS不能运行,JNLP文件像普通XML文件一样显示在Browser里
解决办法:请修改tomcat里,发布程序的路径中的web.xml。
在其中添加
application/x-java-jnlp-file
以支持JNLP文件。
问题二:不能下载资源或下载资源失败
解决办法:请卸载JWS的客户端,并将注册表里有关JWS的项目都删除,并确保program Files下的Java Web Start目录已被删除,然后,重装JWS。
问题三:下载资源中有未签名文件
解决办法:1:确保所有的jar包及其他资源都进行过签名。
2:确保整个资源中,没有中文的命名。好像签名工具不支持中文命名的文件名,所以未签到名。这可让我郁闷了一下午哦。
3:察看已经签名的jar包中,meta-inf路径下的jwstest.sf(jwstest是你在进行签名时-alias后的命名)文件,他详细的列出了所有已签名的文件,以分析签名失败的原因。