Java Web Start 实现关键

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

实现Java Web Start可能需要注意下面的问题:

1. JDK1.4版本中已经自带了Java Web Start,但还需要手工找到JDK1.4的目

录运行其中的javaws***安装文件来安装Java Web Start.安装后会出现如

d:\program files\Java Web Start的目录,注意以后在网上运行Java

Web Start的程序后都会将程序下载到该目录的.javaws/cache目录下。

2. 要注意配置web sever,例如采用JRun就需要配置Web application --> Demo --> MIME Type Mapping,在其中要增加新的MIME类型:

jnlp : application/x-java-jnlp-file

jar : application/x-java-jnlp-file

其他的web sever如tomcat,可能要手工修改web.xml文件,增加如下:

<MIME Type>

application/x-java-jnlp-file

</MIME Type>

如果不进行上面的配置就直接在浏览器中运行*.jnlp文件就只会显示*.jnlp中的文本,其实上面的过程就相当于给.jnlp后缀加上关联,确保在浏览器中能返回正确的MIME类型。

3. JNLP文件的格式

===================================

' 指定j2se版本1.0,'UTF-8'为编码格式,这个代码一般不需要改动.

<?xml version="1.0" encoding="UTF-8"?>

' 指定server端的主目录

<jnlp codebase="http://localhost:8100/demo/JavaWebStart">

<information>

’设置一些信息,包括:标题、提供商、描述、主页等

<title>MyIE</title>

<vendor>RookieSoft Corporation</vendor>

<description>MyIE just demo how to program with jnlp.</description>

<homepage href="http://localhost:8100/demo/JavaWebStart" />

<icon href="./../images/rookie.gif"/>

<icon kind="splash" href="./../images/logo.gif"/>

<offline-allowed/>

</information>

‘有的时候还需要设置安全规则,如all-permission表示允许所有操作,包括本地文件访问等,这里不需要设置.

<resources>

' 指定j2se版本

<j2se version="1.3+"/>

’指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载)

<jar href="MyIE.jar"/>

</resources>

' 指定运行时的main class

<application-desc main-class="MyIE"/>

' 还可以指定运行的参数,可以有多个参数,并列的书写就可以了.

<argument>arg1</argument>

</application-desc>

</jnlp>

===================================

** 下载资源错误

在使用Java Web Start的时候可能会出现"下载资源错误",大致的出错信息如下:

*******************************************************

JNLPException[category: Download Error : Exception:

java.io.IOException:

rename failed in cache : LaunchDesc: null ] at.....

*******************************************************

这个错误的原因是因为每次调用Java Web Start都会到server上查找程序是否更新,然后将程序下载到本地的java web start目录下的cache目录中,如果cache中

已经有同名文件,而且该文件正在被使用,那么新下载的文件就会出现 rename failed错误,而且手工去删除本地的文件还会报错:文件正被使用!,这里涉及到Java

Web Start中的sign机制,可能对每个jar文件都需要标记,有的时候会在任务管理器中看到javaw.exe在运行,将该程序终止后就可以将本地的jar文件删除掉,说明这

些本地文件可能还保留着文件锁定吧!有时即使将Task Manager中将所有的java程序都kill掉还是会出错,必须要注销windows才可以,不知道是不是Java Web Start

自身的问题.

** argument

如果需要给*.jar文件传递参数,可以用如下代码:

<application-desc main-class="XBFrame"/>

<argument>-port</argument>

<argument>1008</argument> ' 要注意-port 和1008是两个参数,要分开写.

</application-desc>

** jws console

有的时候还需要看到*.jar中System.out.print语句输出的信息,就要打开jws的console,可以在jws manager 中的首选项中设置.

** security

java web start中对本地文件操作、访问远程数据库等操作都进行了安全限制,如果要实现这些操作,一般要在jnlp中增加代码:

<security>

<all-permissions/>

</security>

以上代码表示允许所有的操作,但要实现这一点,还需要对*.jar文件进行sign操作,也就是安全签名,可采用

jdk中自带的keytool和jarsigner工具来进行签名,步骤如下:

** keytool

例如:keytool -genkey -alias MySelf -keypass 888888

' -alias 表示产生一个化名,要记住这个化名,后面要用到

' -keypass 输入一个密码就可以了

一般会产生keystore文件,keytool还有一些其他选项,可以在console中查看帮助.

** jarsigner

例如:jarsigner -alias MySelf ***.jar

jarsigner表示对jar程序进行签证.只有经过签证的程序才可以设置all-permissions属性。

** 根认证

jws manager中的首选项中还可以选择根认证.

** Certificate

jarsigner中默认采用了RSA和DSA的加密算法,有些公司也希望能自己购买Certificate文件,不过两种方式都应该可以运行,一般第一次运行java web start程序

时会弹出对话框要用户确认是否承认该认证。

** 最后说明

因为对JWS也是一个新手,所以很多问题也只是表面的认识,如果有表达不当或理解肤浅的地方,请多包涵.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航