分享
 
 
 

轻松玩转JavaWebStart

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

系统环境:Win2000Professional+Tomcat3.2.1+JDK1.3。

一:JWS简介

JWS主要用来通过网络部署你的应用程序,它具有安全、稳定、易维护、易使用的特点。用户访问用JWS部署应用程序的站点,下载发布的应用程序,既可以在线运行,也可以通过JWS的客户端离线运行已下载的应用程序。对同一个应用程序,在第一次运行时下载,以后每次运行时,JWS的客户端会自动去探测是否有版本更新,有更新就自动下载新版本,没有更新就直接运行本地当前版本,所有的麻烦全由JWS去承担。好,下面我们就一步一步来搭建JWS

二:搭建支持JWS的Web站点

第一步:你的Tomcat3.2.1已经正常运转

第二步:找到TomcatHOME/conf下的web.xml文件,在其中添加<mime-type

application/x-java-jnlp-file

</mime-type

以支持JNLP文件。

三:部署应用程序

第一步:开发你希望发布的应用程序

第二步:把应用程序及所用到的所有资源打成一个或多个jar包

第三步:如果你的应用程序不会用到任何运行这个应用程序的机器的本地资源,那么,你的应用程序就可以部署了。

第四步:如果你的应用程序用到了运行这个应用程序的机器的本地资源,那么,你的应用程序就必须先签名然后才可以发布。

第五步:如何给应用程序签名

1:首先确保你已经完全安装了Java2的环境,有keytool工具,它位于J2SE SDk的bin目录下。这一般不会有问题。

2:到Dos状态下,进入你需发布应用程序的jar包所在的目录,运行下面这句话

keytool -genkey -keystore myKeystore -alias jwstest

它将会提示你输入用户名、密码等,不用理它,按照提示随便输入即可,但一定要记住密码。运行结束它将会在当前路径下创建名为myKeystore的文件。

3:如果你想察看一下刚才生成的myKeystore文件的内容,可以使用下面这句话:

keytool -list -keystore myKeystore

显示出来应该类似如下:

Keystore type: jks

Keystore provider: SUN

Your keystore contains 1 entry:

jwstest, Tue Nov 23 19:29:32 PST 2001, keyEntry,

Certificate fingerprint (Test):

C3:A9:CD:F3:D3:AC:4D:3F:3C:5B:AF:9E:CF:0D:46:5C

4:对你需发布应用程序的jar包进行签名,运行下面这句话:

jarsigner -keystore myKeystore yourtest.jar jwstest

其中yourtest.jar是你的jar包名,你需要修改它,别的就不必修改了。运行时会提示你输入密码,就是你刚才在生成myKeystore文件时设定的密码。

第六步:部署应用程序的jar包。

1:在Tomcat的webapps中新建目录JWSTest

2:在JWSTest下新建目录apps,META-INF,WEB-INF

3:在apps下新建目录images和lib

4:在META-INF中拷入MANIFEST.MF

5:在WEB-INF中拷入web.xml

6:把已经准备好的jar包拷入lib目录下

四:Jsp页面

第一步:编写用于Web访问的页面index.jsp如下:

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

<html

<titleJWS Test</title

<head

<SCRIPT LANGUAGE="javascript"

function insertLink(url, name) {

document.write("<a href=" + url + "" + name + "</a<br<br");

}

insertLink("http://你的IP:8080/

JWSTest /apps/JWSTest.jnlp"," JWSTest ");

</SCRIPT

</head

<body

</body

</html

第二步:在jsp中添加检测访问的客户端是否已经安装了JWS的客户端的代码,示例如下:

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

<html

<title JWS Test </title

<head

<SCRIPT LANGUAGE="javascript"

var javawsInstalled = 0;

isIE = "false";

if (navigator.mimeTypes && navigator.mimeTypes.length) {

x = navigator.mimeTypes['application/x-java-jnlp-file'];

if (x) javawsInstalled = 1;

} else {

isIE = "true";

}

function insertLink(url, name) {

if (javawsInstalled) {

document.write("<a href=" + url + "" + name + "</a<br<br");

} else {

document.write("<a href=" + url + ""+ name +"</a<br<br");

}

}

</SCRIPT

<SCRIPT LANGUAGE="VBScript"

on error resume next

If isIE = "true" Then

If Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) Then

javawsInstalled = 0

Else

javawsInstalled = 1

End If

End If

</SCRIPT

<SCRIPT LANGUAGE="javascript"

if(javawsInstalled){

insertLink("http://你的IP:8080/

JWSTest /apps/JWSTest.jnlp"," JWSTest ");

}else{

//通知用户要先安装JWS的客户端,你可以自己提供下载或是直接链接到Sun的JWS下载。

//分为两种,如果客户端已经安装了Java运行环境,则只要下载javaws-1_0_1_01-win-int.exe即可。

//如果客户端没有安装Java运行环境,则要下载完整的javaws-1_0_1_01-win-int-rt.exe。

}

</SCRIPT

</head

<body

</body

</html

五:JNLP文件

第一步:下面我们来编写JWS的核心配置文件JNLP,有了它,才能将以上各部分联系起来,真正让JWS运转起来。JNLP文件符合标准的XML语法,实质就是一个XML文件。当然,编写它的最好方式是对已写好的JNLP进行改写。JWSTest.jnlp示例如下:

<?xml version="1.0" encoding="utf-8"?

<!-- JNLP File for SwingSet2 Demo Application --

<jnlp

spec="1.0+"

codebase="http://你的IP:8080/JWSTest/apps"

href=" JWSTest.jnlp"

<information

<title JWS Test </title

<vendorYOUR Name</vendor

<homepage href=" JWSTest.html"/

<description JWS Test </description

<icon href="images/ JWSTest.jpg"/

<offline-allowed/

</information

<security

<all-permissions/

</security

<resources

<j2se version="1.3"/

<jar href="lib/ JWSTest.jar"/

</resources

<application-desc main-class="运行启动的主类"/

</jnlp

第二步:部分JNLP的关键语法

<jnlp元素

spec:必须是1.0及以上版本,这里用1.0+,不需修改。

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

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

<infomation元素

Title:发布的应用程序简单标题,需自行修改。

Vendor:发行商信息,可以写上你的大名,需自行修改。

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

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

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

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

<security元素

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

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

<resource元素

<j2se version = 指定jdk版本

<jar href = 指定需发布的应用程序的jar包存放的位置

<application-desc元素

main-class:应用程序运行启动的主类

<argument:应用程序运行时的参数,可以有多个,每一个参数用一对<argument参数</argument。

至此,你已经完全构建了运转JWS的各部件。

六:完整发布和测试

前面我们已经准备好了需发布的应用程序的jar包,也写好了用来访问的jsp文件和服务器端的核心jnlp文件。

第一步:在JWSTest下新建目录jsp。把index.jsp拷入jsp目录。

第二步:把jnlp文件直接拷入apps目录下。

第三步:在浏览器

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有