使用Java Web Start部署java application

使用Java Web Start部署java application

 

Java Web Start(以下简称JWS)是SUN提供的一种通过Web来部署和发布Java 程序的新技术,它既可以用来发布Application,也可以用来发布Applet,它仅在第一次运行时下载程序,以后的事情,就全全交给JWS,包括版本的自动更新和维护。这是我们曾经梦寐以求的事情,程序运行在客户端(本地运行,当然有足够的速度),但不用去安装配置客户端,也不用去考虑版本升级后对客户端的维护,这就是JWS提供给我们的好处之一。

 

本文所应用的平台是JDK5.0tomcat5.5

 

搭建WEB平台

Tomcat 3.2.1 以上版本,需要修改找到TOMCAT_HOME/conf下的web.xml文件,在其中添加


application/x-java-jnlp-file
使其能支持jnlp文件

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 valuekey)

会提示你输入用户名、密码、公司、省、国家等,不用管,随意输入一些就可以了,但是必须要记住密码,不要忘了,否则就得重新签名了。在这一堆问题的最后,会提示你保存[],这里输入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页面
编写web项目的index.jsp文件,以便打开时使用。
代码如下

<%@page contentType="text/html;charset=gb2312"%>

JWS Test

 

编写JNLP文件

  spec="1.0+"

  codebase="http://192.168.71.214:8080/jwstest/apps"

  href="jwstest.jnlp">

 

    JWS Test

    wonder

   

    JWS Test

   

   

 

 

  

 

 

   

   

    main="false"/>

   

   

    

   

   

   

    

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

    main="true"/>

   

   

   

   

   

   

   

   

   

   

   

 

 



这个文件中,要注意的是如果都不加这个,则默认main class在第一个jar文件中。增加了这个内容后,可以将多个jar文件放在不同的地方,便于管理。同时finss.jar中的MENIFSET中也得增加classpath的描述,参见我的另外一个文档。

文件内容格式的说明:
元素
spec
:必须是1.0及以上版本,这里用1.0+,不需修改。

codebase
:资源的URL,是JNLP指向各连接的起始处,需自行修改。

Href
JNLP文件相对codebase的存放位置,和JNLP文件的全名,需自行修改。

元素

Title:发布的应用程序简单标题,需自行修改。
Vendor
:发行商信息,可以写上你的大名,需自行修改。

Homepage
:存放有关应用程序的相关文档的URL,如help文件等,可有可无。

Description
:对应用程序的描述,可以有多对,可有可无。

Icon
:用户下载你的应用程序后,在JWS里显示的图标的URL,应是gifjpeg格式。需自行修改。

Offline-allowed
:选择项,允许用户离线运行应用程序,一般都会有,不用修改。

元素
选择项,如果没有指明,默认是不允许应用程序访问用户的本地资源,即应用程序是沙箱运行。

如果设定为,则表示允许应用程序访问用户的本地资源。一般都会设定此值。

元素
指定jdk版本
>
指定需发布的应用程序的jar包存放的位置
>
元素

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客户端里已下载的应用程序。

FAQ

通过上面的讲述,你一定能体会到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.sfjwstest是你在进行签名时-alias后的命名)文件,他详细的列出了所有已签名的文件,以分析签名失败的原因。

 

 

 

你可能感兴趣的:(原创,java理论与实践,java,application,web,jar,tomcat,security)