小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

利用 Java Web Start發(fā)布你用java程序

 funson 2007-05-13

 

前言:
關(guān)于 JWS
JWS 是作為 JSR-56 的一部分而創(chuàng)建的,目的是提供一種方法來分發(fā)在客戶端上的 JVM 中運(yùn)行的 Java 應(yīng)用程序。JWS 包括以下特征:

部署
    運(yùn)行 JWS 應(yīng)用程序包括選擇 HTML 鏈接,與打開新的頁面沒有什么區(qū)別,惟一的不同之處在于 Web 服務(wù)器頁面是 .jnlp 文件,該文件啟動(dòng) JWS 插件來在客戶端上本地下載和執(zhí)行應(yīng)用程序。
緩存
    一旦應(yīng)用程序下載完畢,就可以把它緩存在客戶端電腦上。每當(dāng)應(yīng)用程序重新啟動(dòng)時(shí),JWS 就檢查服務(wù)器,查看是否有更新的版本要下載。如果沒有,就運(yùn)行本地的版本,從而避免再次下載。如果存在一個(gè)新的版本,就自動(dòng)檢索新的版本,因此管理員從來就不必?fù)?dān)心舊的客戶端連接到已更新的服務(wù)器程序 API 上。
獨(dú)立于瀏覽器 JRE
    JWS 允許您精確地指定您想在什么客戶端 JRE 級(jí)別中運(yùn)行它(獨(dú)立于瀏覽器是如何配置的)。這一特征避免了 Applet 標(biāo)記和瀏覽器 JRE 級(jí)別的問題(比如用 Microsoft Internet Explorer)。與 Applet 標(biāo)記共享單一的用于瀏覽器的 JVM 實(shí)例不同,每個(gè) JWS 應(yīng)用程序都有自己獨(dú)立的 JVM,并通過它自己的 main(String[] args) 方法啟動(dòng)。
安全性驗(yàn)證
    Java 安全性模型用于驗(yàn)證 JWS 應(yīng)用程序的來源并限制對(duì)易受攻擊的系統(tǒng)服務(wù)(比如 I/O 和通信)的訪問。 必須通過認(rèn)證已簽署的 JAR 文件來授予每個(gè) JWS 程序顯式訪問這些服務(wù)的權(quán)限。
桌面集成
    一旦 JWS 應(yīng)用程序從 .jnlp 文件下載完畢,就可以把它集成在桌面上作為獨(dú)立的圖標(biāo)。這樣該應(yīng)用程序就可以重新啟動(dòng)而不用通過 Web 瀏覽器。

如果您有 JRE 1.4.1 或更新的版本,那么您已經(jīng)安裝了 Java Web Start 。如果您沒有 JRE 1.4.1 或更新的版本,可以從 Sun 下載頁面下載并安裝 JRE。

與介紹 GUI 編程的新方法的文章的傳統(tǒng)一樣,第一步是創(chuàng)建 Web 啟動(dòng)應(yīng)用程序,它顯示帶有“Hello World”的對(duì)話框:這分兩步進(jìn)行:首先創(chuàng)建類并將其部署在 Web 服務(wù)器中,接著客戶端個(gè)人計(jì)算機(jī)訪問該 URL,這樣就可以通過 JWS 下載和調(diào)用它。
Sun 提供了一個(gè)實(shí)現(xiàn)JNLP的稱為Java Web Start(JWS)的參考實(shí)現(xiàn)。讓我們使用它開發(fā)一個(gè)使用JFC Swing的簡單應(yīng)用。為了做這個(gè),你需要從http://java./products/javawebstart下載JWS。(譯者注:JDK的新版本JDK1.4已經(jīng)內(nèi)置JWS,無須另外下載。)

操作步驟:
一.一般的應(yīng)用發(fā)布
1)創(chuàng)建要發(fā)布的應(yīng)用程序;
創(chuàng)建例子文件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 個(gè)文件          9,845 字節(jié)
               2 個(gè)目錄  3,277,553,664 可用字節(jié)

D:\eclipse\workspace\jnlp\bin>jar cvf HelloJNLP.jar *.class
標(biāo)明清單(manifest)
增加:HelloJNLP$1.class(讀入= 651) (寫出= 422)(壓縮了 35%)
增加:HelloJNLP.class(讀入= 1889) (寫出= 1079)(壓縮了 42%)

3)發(fā)表應(yīng)用到web server上
將生成的HelloJNLP.jar 文件copy到Tomcat的webapp目錄之下.
4)創(chuàng)建.jnlp文件;
使用文本編輯器來編輯一下內(nèi)容.保存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)啟動(dòng)java web start

在java web start 應(yīng)用程序管理器的地址里輸入我們的web applicatoin 發(fā)布的地址
http://127.0.0.1:8080/index.html
運(yùn)行成功!

二.有訪問外部資源的應(yīng)用發(fā)布

安全性:
一些 JWS 應(yīng)用程序可能希望訪問客戶端個(gè)人計(jì)算機(jī)上的服務(wù),比如 用于讀取和寫入文件或打開套接字
并進(jìn)行連接的 IO。為了安全性的目的,您不想惡意程序無限制地訪問您的個(gè)人計(jì)算機(jī)上的這些工具,為此,
JWS 使用 Java 安全性模型和 JAR 文件認(rèn)證。在缺省情況下,JWS 虛擬機(jī)是一個(gè)受限的沙箱(Sandbox),
它拒絕對(duì)這些服務(wù)的訪問。如果您試圖超出安全性管理器的許可,比如執(zhí)行一些文件 IO ,就會(huì)產(chǎn)生一個(gè)異常。
操作的步驟:
1)修改.jnlp文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- file Hello.jnlp -->
<jnlp codebase="   <information>
    <title>Hello jackey</title>
    <vendor>jackey jiao Sample May 2004</vendor>
    <icon href="photo1.JPG"/>
  </information>
 <security>
 <all-permissions/><!--加入安全權(quán)限-->
 </security>
  <resources>
    <j2se version="1.2+"/>
    <jar href="sHelloJNLP.jar"/><!--修改此處-->
  </resources>
  <application-desc main-class="HelloJNLP"/>
</jnlp>
2)創(chuàng)建簽署的.jar文件
為了簽署 JAR 文件,您可以使用 JDK 附帶的 keytool 命令,即使您將把您的
JWS 應(yīng)用程序放在完整的產(chǎn)品中,也還是推薦您從像 Thawte 或 VeriSign 這樣的結(jié)構(gòu)獲得認(rèn)證。

D:\eclipse\workspace\jnlp\bin>keytool -genkey -alias helloAlias -keypass wsddjws
 -keystore joestore -storepass richjavaclient
您的名字與姓氏是什么?
  [Unknown]:  Jackey
您的組織單位名稱是什么?
  [Unknown]:  wbx
您的組織名稱是什么?
  [Unknown]:  china
您所在的城市或區(qū)域名稱是什么?
  [Unknown]:  hz
您所在的州或省份名稱是什么?
  [Unknown]:  zj
該單位的兩字母國家代碼是什么
  [Unknown]:  cn
CN=Jackey, OU=wbx, O=china, L=hz, ST=zj, C=cn 正確嗎?
  [否]:  y


D:\eclipse\workspace\jnlp\bin>

D:\eclipse\workspace\jnlp\bin>jarsigner -keystore joestore -signedjar  sHelloJNL
P.jar HelloJNLP.jar helloAlias
Enter Passphrase for keystore: richjavaclient
Enter key password for helloAlias: wsddjws

D:\eclipse\workspace\jnlp\bin>
3)發(fā)布新的應(yīng)用
copy index.html 和 sHelloJNLP.jnlp文件我Tomcat下面.
運(yùn)行的情況如圖.

結(jié)束語
本文展示了可以如何使用 Java Web Start 來分發(fā) WebSphere 中豐富的 Java 應(yīng)用程序,以便它們運(yùn)行在客戶端個(gè)人計(jì)算機(jī)上。通過使用 .jnlp 文件來指定關(guān)于應(yīng)用程序的信息可以做到這一點(diǎn)。本文還展示了如何在客戶端個(gè)人計(jì)算機(jī)上緩存這些應(yīng)用程序以及可以如何以桌面快捷方式的形式安裝它們。當(dāng)應(yīng)用程序需要更新時(shí),它是在服務(wù)器上的一個(gè)單獨(dú)的位置進(jìn)行更改的,因而所有的客戶端都可以根據(jù) .jnlp 文件的日期和時(shí)間戳在它們下一次連接時(shí)獲取新的副本。另外,本文展示了可以如何用 JnlpDownloadServet 來軟復(fù)制 jnlp 文件的代碼庫以及如何提供顯式的日期和時(shí)間戳,從而允許 .jnlp 文件在分布式環(huán)境中的 WebSphere 的多個(gè)副本之間復(fù)制,而同時(shí)作為單個(gè)程序定義出現(xiàn)在客戶端中。我們希望您會(huì)發(fā)現(xiàn) JWS 是一種強(qiáng)大而靈活的管理豐富的實(shí)際 Java 客戶端應(yīng)用程序的工具.



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=175896


[收藏到我的網(wǎng)摘]   Jackey發(fā)表于 2004年11月10日 15:34:00

相關(guān)文章:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多