1 新建一个java project,命名为:webstart(名字可能随便取),加入程序:
package jws; import javax.swing.*; public class HelloWorld { private JFrame jFrame; private JPanel jPanel; private JLabel label; public HelloWorld() { jFrame = new JFrame("HelloWorld Test Frame"); label = new JLabel("Hello, world!"); jPanel = new JPanel(); jPanel.add(label); jFrame.add(jPanel); jFrame.pack(); jFrame.setSize(400, 150); jFrame.setLocation(400, 300); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // webstart 启动时执行的主方法 public static void main(String args[]) { new HelloWorld(); } }
2 打包成可执行jar包:
webstart->Export->Runnable JAR file->选择存放位置和jar名(如:d:/HelloWorld.jar)和运行的main方法所在的类->finish
3 数字签名:
对打成可执行文件的HelloWorld.jar包用下面的命令来签名:
a 到Dos状态下,,进入你们需发布应用程序的jar包所在的目录,运行下面这句话:
keytool -genkey -keystore myKeystore -alias jwstest
(它们将会提示你们输入用户名、密码等,,不用理它们,,按照提示随便输入即可,,但一定要记住密码..运行结束它们将会在当前路径下创建名为myKeystore(的)文件..)
b 对你们需发布应用程序(的)jar包进行签名:
jarsigner -keystore myKeystore yourtest.jar jwstest
(其中yourtest.jar是你们(的)jar包名(这里就是HelloWorld.jar),你们需要修改它们,,别(的)就不必修改了..运行时会提示你们输入密码,,就是你们刚才在生成myKeystore文件时设定(的)密码..)
4 在tomcat的webapps文件夹下新建一个webstart文件夹,将HelloWorld.jar文件拷入到它里面。
5 下面是建一个.jnlp文件,这个是关键性文件,java web start能工作的主要文件,它也是我们加载服务器资源的关键所在:
<?xml version="1.0" encoding="UTF-8"?> <!--codebase 属性指出搜索应用程序资源的顶级URL,下面的icon/jar元素都是以这个URL为基本.--> <jnlp codebase="http://localhost:8080/webstart/"> <information> <!-- 在"开始"-"运行"菜单中输入"javaws"或"javaws -viewer"启动Web Start,会看到客户端已经安装的webstart应用程序 --> <!-- title:应用程序标题 vendor:供应商;title/vendor元素是必须,会显示在用"javaws -viewer"命令打开的应用程序缓存查看器(Java Application Cache Viewer)中 --> <title>HelloWorld</title> <vendor>Lively Corporation</vendor> <description>HelloWorld Test Example for WebStart.</description> <!--homepage :存放有关应用程序的相关文档的URL,如help文件等,仅仅是description作用--> <homepage href="http://127.0.0.1:8080/webstart/index.html" mce_href="http://127.0.0.1:8080/webstart/index.html" /> <!-- icon 指定图标会显示在应用程序缓存查看器中(作为java web应用程序的图标), 在查看器中新建webstart快捷方式到桌面时也会显示为快捷方式图标,只支持GIF/JPEG格式,其它格式无效 --> <icon href="images/Fish13.jpg" mce_href="images/Fish13.jpg" /> <!--splash 在sun的文档中提到会出现在webstart启动时的闪屏中,不过可能由于速度问题,我没有观察到--> <icon kind="splash" href="images/Fish13.jpg" mce_href="images/Fish13.jpg" /> <!-- 允许离线启动,可以使用javaws -offline命令--> <offline-allowed/> </information> <resources> <!-- 指定客户端需要安装的j2se版本,下面指定为1.5,也可以用1.5+表示1.5版本以上的, 如果这里设置版本为1.5,而我机装的是1.6(所以我这里设置为1.7也会出现后面的问题),那么提示正在请求 JRE 1.5,过一段时间提示:无法启用该应用程序,提示手动更新j2se版本 改为1.5+就可以用1.6的JRE来运行它了 --> <j2se version="1.5+" /> <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载), 可以包含一些资源文件,如icons/configuration files,可以使用getResource方法取得 --> <jar href="HelloWorld.jar" mce_href="HelloWorld.jar" /> </resources> <security> <all-permissions/> </security> <!--application-desc 必须,指定webstart启动时执行jar文件中的哪个类--> <application-desc main-class="jws.HelloWorld" /> </jnlp>
将该配置文件命名为helloWorld.jnlp,什么名字都可以的,然后拷到HelloWorld.jar所在的tomcat文件里去。
6 开启tomcat服务器,用http://localhost:8080/webstart/helloWorld.jnlp就可以访问helloWorld.jnlp文件,服务器再根据helloWorld.jnlp文件来加载HelloWorld.jar文件,就可以在客户端直接运行服务器的资源,它工作过程是先将服务器资源下载到客户机,再运行的,每一次访问都会到服务器去看可执行jar包是否为最新的,本地若不是最新的就重新加载最新的,再运行,保持资源的最新版本;。没有改动时程序会直接从客户端启动,这样就会比较快。