JWS入门

article/2025/9/22 21:33:49

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>
<title>JWS 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 nextIf isIE = "true" ThenIf Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) ThenjavawsInstalled = 0ElsejavawsInstalled = 1End IfEnd 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 -->
<jnlpspec="1.0+"codebase="http://你的IP:8080/JWSTest/apps"href=" JWSTest.jnlp"><information><title> JWS Test </title><vendor>YOUR 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目录下。

第三步:在浏览器里输入:http://localhost:8080/JWSTest/jsp/index.jsp 即可访问到jsp页面。页面应出现JWSTest字样。

第四步:点击JWSTest,连接到apps下的JWSTest.jnlp文件,JWS启动,开始下载你发布的应用程序。

第五步:下载完毕,直接运行即可。以后,你也可以直接运行JWS客户端里已下载的应用程序。

不出意外,应恭喜你已经开始享受JWS带来的乐趣了。




常见问题

通过上面的讲述,你一定能体会到JWS的易用性。或许事情并没有那么简单,以我的使用经验,还会有许多问题出现,在这里挑几个经常出现的问题,给出相应解决方法,让大家少走弯路,而享受更多的乐趣。

问题一:JWS不能运行,JNLP文件像普通XML文件一样显示在Browser里

解决办法:请修改tomcat里,发布程序的路径中的web.xml。

在其中添加<mime-type> 
application/x-java-jnlp-file 
</mime-type> 
以支持JNLP文件。

问题二:不能下载资源或下载资源失败

解决办法:请卸载JWS的客户端,并将注册表里有关JWS的项目都删除,并确保program Files下的Java Web Start目录已被删除,然后,重装JWS。

问题三:下载资源中有未签名文件

解决办法:1:确保所有的jar包及其他资源都进行过签名。

2:确保整个资源中,没有中文的命名。好像签名工具不支持中文命名的文件名,所以未签到名。这可让我郁闷了一下午哦。

3:察看已经签名的jar包中,meta-inf路径下的jwstest.sf(jwstest是你在进行签名时-alias后的命名)文件,他详细的列出了所有已签名的文件,以分析签名失败的原因。






http://chatgpt.dhexx.cn/article/L1PLahVp.shtml

相关文章

【C语言】判断一个数是否是完全平方数(两种解法)

题目&#xff1a; 判断一个数是否是完全平方数。 以下数字为完全平方数&#xff1a;42*2,93*3,14412*12,16913*13 有两个方法&#xff0c;可以求完全平方数&#xff1a; 方法一&#xff1a;输入一个数&#xff0c;遍历所有比这个数小的数&#xff0c;只要有其中一个数满足条件…

C语言 输入10个数,将其中最小的数与第一个数对换,将最大的数与最后一个数对换

#include <stdio.h> void input(int *number){ //定义输入10个数的函数int i;printf("请输入10个整数:\n");for(i0;i<10;i)scanf("%d",&number[i]); } void max_min_value(int *number){ //交换函数int *max,*min,*p,temp;maxminnumber; //开…

C语言判断一个数是奇数还是偶数

#include <stdio.h> void main() { int n; scanf("%d",&n); //运用scanf函数可以输入想要的数字 //也可以采用int n&#xff08;取一个数&#xff09;进行运算 if(n%20)//if函数注意&#xff0c;%是取余 printf("%d是一个偶…

python判断三位数水仙花数_Python如何判断一个数字是否为水仙花数

水仙花数是一个三位数,并且每一位数字的三次方的和还等于这个数字。 下面我们来看一下如何用Python判断这个数字是否为水仙花数 工具/原料 电脑 Python开发工具 方法/步骤 1 创建一个变量s,用input代码和用户交互,代码如下: s = input("请输入一个数字:"…

c语言判断一个数是否是素数

1&#xff1a;什么是素数 素数就是一个数只能被1和他本身整除的数我们称之为素数。例如13&#xff0c;17&#xff0c;19一类的数。 2&#xff1a;求出一个数是否是素数的思路 素数是只能被1和本身整除的数&#xff0c;那么如果设这个数为n&#xff0c;那么它就不能被2~n-1整…

python用函数判断一个数是否为素数,python分享是否为素数 python输入并判断一个数是否为素数...

python输入并判断一个数是否为素数 x=int(input("x\n")); i=2; for i in range(2,x+1): if(x%i==0): break;if(i==x and i。 用python 判断一个数是否是素数 小编觉得小编的程序是对的但为什么没办法运行,那个弹出来的窗口是啥意思小编曾千万次的请分享:不要逼小编…

python中判断一个数是否为素数_怎么用python判断一个数是否是素数

先来看下什么是质数&#xff1a; 质数(Prime number)&#xff0c;又称素数&#xff0c;指在大于1的自然数中&#xff0c;除了1和该数自身外&#xff0c;无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。 简单来说就是&#xff0c;只能除以1和自身的数(需要大…

取到一个数的各个位的方法

计算方式如下&#xff1a; 个位&#xff1a;用这个数除以1对10取余&#xff0c;num / 1 % 10; 因为1除以&#xff08;除了0以外&#xff09;任何数都等于这个数的倒数&#xff0c;所以计算个位可以直接对10取余&#xff08;num%10&#xff09; 来获得。 十位&#xff1a;除以…

得到一个数每一位数字的几种方法

1.&#xff08;最简单暴力&#xff09;直接将数字转换为字符串&#xff0c;然后转换为字符数组输出。 int n12345;char[] charsString.valueOf(n).toCharArray();for(int j0;j<chars.length;j){System.out.print(chars[j]" ");}2.整除法。 int n12345;List<Int…

Html5超链接重置为link状态,去除a标签下划线 html超链接更改颜色和去掉下划线

去掉a标签下划线&#xff1a; 对超链接下划线设置 使用代码"text-decoration" 语法&#xff1a; text-decoration : none || underline || blink || overline || line-through text-decoration参数&#xff1a; none : 无装饰 blink : 闪烁 underline : 下划线 line-…

html5 a标签去下划线,css中如何去掉a标签的下划线?

我们在HTML网页制作过程中&#xff0c;相信大家对css文本超链接这个概念并不陌生。我们都知道想要给某段文本或者指定元素添加一个锚点也就是超链接需要用到HTML中的a标签。 那么有的新手可能就会发现&#xff0c;在使用a标签时文本超链接会自动出现下划线&#xff01;从视觉美…

css中怎么消除a的下划线,如何使用css去掉a标签的下划线?(代码详解)

写html超链接的时候&#xff0c;超链接总是自带下划线&#xff0c;如果不需要下划线&#xff0c;我们需要将其去掉&#xff0c;下面我们就来说一下怎么去掉下划线。 我们在使用超链接的时候&#xff0c;下划线总是伴随着出现&#xff0c;从视觉上来说有着下划线的a标签总是感觉…

MySQL数据库常用命令

活动地址&#xff1a;CSDN21天学习挑战赛 1.对数据库常用命令 1.连接数据库 mysql -u用户名 -p密码 2.显示已有数据库 show databases; 3.创建数据库 create database sqlname; 4.选择数据库 use database sqlname; 5.显示数据库中的表&#xff08;先选择数据库&#xff09; sh…

mysql命令更新数据库_命令操作MySQL数据库

一、连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、 连接到本机上的MYSQL。 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如…

微信小程序小说阅读器/在线故事阅读丨可以android studio运行

《微信小程序小说阅读器后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统&#xff0c;该后台采用前后台前后分离的形式使用JavaVUE 微信小程序——前台涉及技术&#xff1a…

微信读书护眼版

微信读书是我目前发现的比较好用的读书平台之一&#xff0c;电子书资源丰富&#xff0c;界面风格还挺舒服&#xff0c;支持app和网页版&#xff0c;唯一难受的就是网页版的背景显示方案太少了&#xff0c;只能切换浅色和深色两种&#xff0c;上班想摸鱼看会书&#xff0c;直刺得…

微信读书产品体验报告

微信读书【5.0.5】产品体验报告 本文预览 微信读书凭借着简洁的风格、丰富的电子版权以及良好的推书、读书的阅读氛围获得了一大批粉丝&#xff0c;在现今短视频类应用占据用户大量时间的今天&#xff0c;为何微信读书像一股清流抓住了用户注意力&#xff0c;它又是怎么去实现…

微信小程序图书阅读项目 (:

获取项目源代码&#xff1a;扫码下方小程序获取或者加作者微信获取 1.简介 小程序图书阅读项目是使用uni-app编写的小程序图书阅读项目&#xff0c;项目前后端分离&#xff0c;小程序使用uni-app&#xff0c;后台管理使用vue2elementUI,后端使用SpringBootSpringCloudAlibaba编…

真的!?在阅读体验感上赢过微信读书?

把书读薄&#xff0c;是多少人读多少书都不一定能做到的事啊&#xff0c;在现在&#xff0c;学生无纸化学习&#xff0c;职场人无纸化办公&#xff0c;海量的图书文件全都存储在轻便的移动端上&#xff0c;不就是把书阅读越薄了。 电子书阅读APP微信读书注册用户数2.1亿&#…

基于微信小程序的在线免费小说阅读系统

项目介绍&#xff1a; 本系统是我的毕业设计&#xff0c;大概耗时一个月完成&#xff0c;后台部分因为某些原因就不放出来了&#xff0c;前端没有用什么框架比较好理解&#xff0c;本着开源精神发布出来。希望能帮助需要的人吧。 一、简介 本程序采用微信小程序云开发…