网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  利用 java web start发布你用java程序     
  文章作者:未知  文章来源:水木森林  
  查看:96次  录入:管理员--2007-11-17  
 
前言:
关于 jws
jws 是作为 jsr-56 的一部分而创建的,目的是提供一种方法来分发在客户端上的 jvm 中运行的 java 应用程序。jws 包括以下特征:

部署
运行 jws 应用程序包括选择 html 链接,与打开新的页面没有什么区别,惟一的不同之处在于 web 服务器页面是 .jnlp 文件,该文件启动 jws 插件来在客户端上本地下载和执行应用程序。
缓存
一旦应用程序下载完毕,就可以把它缓存在客户端电脑上。每当应用程序重新启动时,jws 就检查服务器,查看是否有更新的版本要下载。如果没有,就运行本地的版本,从而避免再次下载。如果存在一个新的版本,就自动检索新的版本,因此管理员从来就不必担心旧的客户端连接到已更新的服务器程序 api 上。
独立于浏览器 jre
jws 允许您精确地指定您想在什么客户端 jre 级别中运行它(独立于浏览器是如何配置的)。这一特征避免了 applet 标记和浏览器 jre 级别的问题(比如用 microsoft internet explorer)。与 applet 标记共享单一的用于浏览器的 jvm 实例不同,每个 jws 应用程序都有自己独立的 jvm,并通过它自己的 main(string[] args) 方法启动。
安全性验证
java 安全性模型用于验证 jws 应用程序的来源并限制对易受攻击的系统服务(比如 i/o 和通信)的访问。 必须通过认证已签署的 jar 文件来授予每个 jws 程序显式访问这些服务的权限。
桌面集成
一旦 jws 应用程序从 .jnlp 文件下载完毕,就可以把它集成在桌面上作为独立的图标。这样该应用程序就可以重新启动而不用通过 web 浏览器。

如果您有 jre 1.4.1 或更新的版本,那么您已经安装了 java web start 。如果您没有 jre 1.4.1 或更新的版本,可以从 sun 下载页面下载并安装 jre。

与介绍 gui 编程的新方法的文章的传统一样,第一步是创建 web 启动应用程序,它显示带有“hello world”的对话框:这分两步进行:首先创建类并将其部署在 web 服务器中,接着客户端个人计算机访问该 url,这样就可以通过 jws 下载和调用它。
sun 提供了一个实现jnlp的称为java web start(jws)的参考实现。让我们使用它开发一个使用jfc swing的简单应用。为了做这个,你需要从http://java.sun.com/products/javawebstart下载jws。(译者注:jdk的新版本jdk1.4已经内置jws,无须另外下载。)

操作步骤:
一.一般的应用发布
1)创建要发布的应用程序;
创建例子文件hellojnlp.java 文件
//------------------------------------------------------
/*
* created on 2004-11-10
*
* todo to change the template for this generated file go to
* window - preferences - java - code style - code templates
*/

/**
* @author jackey
*
* todo to change the template for this generated type comment go to window -
* preferences - java - code style - code templates
*/
//file hellojnlp.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class hellojnlp extends jframe {
public hellojnlp() {
super("hello jnlp");
string loadedfrom = this.getclass().getclassloader().tostring();
jlabel jl = new jlabel("loaded by " + loadedfrom);
jeditorpane jtp = new jeditorpane("text/plain", "edit this text ");
try {
jtp.setpage("http://127.0.0.1:8080/");
} catch (exception e) {
// todo: handle exception
system.err.println("error: "+e.getmessage() );
}

getcontentpane().add(jl, borderlayout.north);
getcontentpane().add(jtp, borderlayout.center);
}

public static void main(string[] args) {
jframe f = new hellojnlp();
f.setbounds(100, 100, 325, 250);
f.setdefaultcloseoperation(dispose_on_close);
f.setvisible(true);
f.addwindowlistener(new windowadapter() {
public void windowclosed(windowevent e) {
system.out.println("shutting down...");
system.exit(0);
}
});
}
}
//------------------------------------------------------
2)编译和打包成.jar文件;
d:>javac hellojnlp.java

d:/eclipse/workspace/jnlp/bin 的目录

2004-11-10 09:49 <dir> .
2004-11-10 09:49 <dir> ..
2004-11-10 14:49 1,889 hellojnlp.class
2004-11-10 14:49 651 hellojnlp$1.class
2004-11-10 12:57 2,091 hellojnlp.jar
2004-11-10 10:32 422 hellojnlp.jnlp
2004-11-10 13:53 178 index.html
2004-11-10 14:45 1,211 joestore
2004-11-10 14:46 3,403 shellojnlp.jar
7 个文件 9,845 字节
2 个目录 3,277,553,664 可用字节

d:/eclipse/workspace/jnlp/bin>jar cvf hellojnlp.jar *.class
标明清单(manifest)
增加:hellojnlp$1.class(读入= 651) (写出= 422)(压缩了 35%)
增加:hellojnlp.class(读入= 1889) (写出= 1079)(压缩了 42%)

3)发表应用到web server上
将生成的hellojnlp.jar 文件copy到tomcat的webapp目录之下.
4)创建.jnlp文件;
使用文本编辑器来编辑一下内容.保存hellojnlp.jnlp文件
<?xml version="1.0" encoding="utf-8"?>
<!-- file hello.jnlp -->
<jnlp codebase="http://127.0.0.1:8080/" href=../../"hellojnlp.jnlp">
<information>
<title>hello jackey</title>
<vendor>jackey jiao sample may 2004</vendor>
<icon href=../../"photo1.jpg"/>
</information>
<resources>
<j2se version="1.2+"/>
<jar href=../../"shellojnlp.jar"/>
</resources>
<application-desc main-class="hellojnlp"/>
</jnlp>
5)编辑html页面
保存为index.html文件.
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> new document </title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
</head>

<body>
<ul>
<li><a href=../../"hellojnlp.jnlp">hellojnlp</a>
<li><a href=../../"showdsb.jnlp">showdsb</a>
</ul>


</body>
</html>

6)启动java web start

在java web start 应用程序管理器的地址里输入我们的web applicatoin 发布的地址
http://127.0.0.1:8080/index.html
运行成功!


二.有访问外部资源的应用发布

安全性:
一些 jws 应用程序可能希望访问客户端个人计算机上的服务,比如 用于读取和写入文件或打开套接字
并进行连接的 io。为了安全性的目的,您不想恶意程序无限制地访问您的个人计算机上的这些工具,为此,
jws 使用 java 安全性模型和 jar 文件认证。在缺省情况下,jws 虚拟机是一个受限的沙箱(sandbox),
它拒绝对这些服务的访问。如果您试图超出安全性管理器的许可,比如执行一些文件 io ,就会产生一个异常。
操作的步骤:
1)修改.jnlp文件
<?xml version="1.0" encoding="utf-8"?>
<!-- file hello.jnlp -->
<jnlp codebase="http://127.0.0.1:8080/" href=../../"hellojnlp.jnlp">
<information>
<title>hello jackey</title>
<vendor>jackey jiao sample may 2004</vendor>
<icon href=../../"photo1.jpg"/>
</information>
<security>
<all-permissions/><!--加入安全权限-->
</security>
<resources>
<j2se version="1.2+"/>
<jar href=../../"s
 
 
上一篇: 理解static    下一篇: 利用java reflection(反射)原理,在hibernate里面实现对单表、视图的动态组合查询
  相关文档
论j2ee开发web应用程序中的安全认证机制(1) 11-16
将java程序变成windows系统服务 11-16
java语言深入 final在java中的应用 11-17
java的按位运算符 11-17
java初学者备忘录 11-17
java servlet和jsp教程(6) 11-17
ojb简介-翻至ojb docs 11-17
使用java实现网络传输数据的压缩 11-16
项目经理需知的java技术问题 11-17
学习java的第一方案 (转贴) 11-17
如何轻松实现javabeans到xml的相互转换 11-17
spring中ioc的入门实例 11-17
在robocode中使用vector实现敌人列表 11-17
设计及设计模式:java23种模式一点就通 01-29
mark spritzler的scjd学习指导!(强烈推荐) 11-17
java开发工具与开发环境问答 11-17
javabean的事件 11-17
think in java 3rd 中文版5 11-17
java image 11-17
实例分析java se 6.0新增功能 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息