[原创]初识JavaWebStart(JWS)--献给我亲爱的父母

来源:互联网 发布:网络商品中介交易流程 编辑:程序博客网 时间:2024/04/29 05:20

作者:bluesky35(蓝天)

  最近一直很忙,每天工作忙到很晚,身心疲惫,不过还是在百忙之中抽出点时间写一些技术短文,虽然最近一直在做C#.NET的项目,但对JAVA还是很照顾的,一直在不断的学习,希望能借文章和网友们交流一下经验.好了,转入正题吧,下面要说的是JavaWebStart(JWS),服务器更新程序,客户端下载执行的技术,一方更新,多方受益.大家和我一起来感受一下吧,呵呵.

环境配置:WindowsXP,JDK1.4.2,Eclipse2.1,Tomcat4.1.27

一.编写代码

  首先我们写一段简单的程序,打开Eclipse2.1,建立名为JavaWebStart的project,然后写一个简单的main函数,加上一段程序(程序的作用是在C盘根目录建立名为Test的文本文件,并填上"bluesky"字样的内容),程序代码如下:

import java.io.*;

/**
 * @author bluesky35
 */
public class WebStartMain {

 public static void main(String args[]) throws FileNotFoundException{
  String filename = "c://Test.txt";
  FileOutputStream fileOut = new FileOutputStream(filename);
  byte text[] = {'b','l','u','e','s','k','y'};
  
  try {
   fileOut.write(text);
   fileOut.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

二.打包程序

  为了发布,我们将编译生成的两进制文件打包成jar以便传输,使用jar命令进行打包,jar -cvf JavaWebStart.jar WebStartMain.class,执行以上命令后我们就可以在class目录下看到JavaWebStart.jar文件了.如图所示:

三.定义配置文件

  将以上生成的jar文件copy到project根目录.为了发布,我们定义名为JavaWebStart.jnlp的配置文件,放在根目录的JnlpHome目录下,JavaWebStart.jnlp文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://172.28.122.126:8080/JavaWebStart/JnlpHome" href="JavaWebStart.jnlp">
  <information>
    <title>JavaWebStart</title>
    <vendor>JavaWebStart project</vendor>
    <homepage href="JavaWebStart.html" />
  </information>
    <security>
        <all-permissions/>
  </security>
  <resources>
    <j2se version="1.3+" />
    <jar href="../JavaWebStart.jar" />
  </resources>
  <application-desc main-class="WebStartMain" />
</jnlp>

注:172.28.122.126是我本地局域网的IP地址

四.编写主页面html文件

  我们使用一个html文件调用jnlp文件,html文件放在根目录,内容如下:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
  <head>
    <title>JavaWebStart</title>
  </head>

  <body>
      <h1>JavaWebStart</h1>
<ul>
<li><a href="http://172.28.122.126:8080/JavaWebStart/JnlpHome/JavaWebStart.jnlp">JavaWebStart</a>
</ul>
  </body>
</html>

注:172.28.122.126是我本地局域网的IP地址

好了,代码编写过程到这里结束了,让我们来看一下整个project的目录结构

五.数字签名

  由于客户端下载服务器端的更新程序运行时,有安全性问题,为了避免恶意攻击,想拥有JNLP文件中<all-permissions/>的设置,我们必须对jar文件做数字签名,过程如下:

(1)生成名为JavaWebStart.store的密钥库,别名为JavaWebStart

keytool -genkey -keystore JavaWebStart.store -alias JavaWebStart

密码:(根据需要自己输入)

以下信息根据需要自己输入,最后确认:y (如下图所示)

(2)导出JavaWebStart.cer数字证书

keytool -export -keystore JavaWebStart.store -alias JavaWebStart -file JavaWebStart.cer

密码:(根据需要自己输入)

导出的证书如下图所示:

(3)对jar文件进行数字签名

jarsigner -keystore JavaWebStart.store  JavaWebStart.jar  JavaWebStart

密码:(根据需要自己输入)

六.运行结果

  好了,最后让我们来运行一下程序,看看结果吧,将JavaWebStart.jar copy到project根目录,启动Tomcat服务,在IE里输入http://172.28.122.126:8080/JavaWebStart/JavaWebStart.html,出现如下图所示的画面

点击JavaWebStart的连接,出现最新版本的确认:

然后会出现数字签名的确认提示:

按开始后大家就可以在C盘根目录看到Test.txt文件了,里面有我的英文名字,呵呵

好了,大家试试吧.最后,祝福我爸爸妈妈身体健康.

原创粉丝点击