Java Web Start(以下簡稱JWS)是SUN提供的一種通過Web來部署和發布Java 程式的新技術,它既可以用來發布Application,也可以用來發布Applet,它獲去年全球Java技術最佳創意獎。它僅在第一次運行時下載程式,以後的事情,就全全交給JWS,包括版本的自動更新和維護。這是我們曾經夢寐以求的事情,程式運行在用戶端(本地運行,當然有足夠的速度),但不用去安裝配置用戶端,也不用去考慮版本升級後對用戶端的維護,這就是JWS提供給我們的好處之一。OK,下面我們就來看看如何玩轉JWS,本文僅用發布Application來做說明。
系統內容:Win2000Professional+Tomcat3.2.1+JDK1.3。
一:JWS簡介
JWS主要用來通過網路部署你的應用程式,它具有安全、穩定、易維護、易使用的特點。使用者訪問用JWS部署應用程式的網站,下載發布的應用程式,既可以線上運行,也可以通過JWS的用戶端離線運行已下載的應用程式。對同一個應用程式,在第一次運行時下載,以後每次運行時,JWS的用戶端會自動去探測是否有版本更新,有更新就自動下載新版本,沒有更新就直接運行本地目前的版本,所有的麻煩全由JWS去承擔。好,下面我們就一步一步來搭建JWS
二:搭建支援JWS的Web網站
第一步:你的Tomcat3.2.1已經正常運轉
第二步:找到TomcatHOME/conf下的web.xml檔案,在其中添加
application/x-java-jnlp-file
以支援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如下:
第二步:在jsp中添加檢測訪問的用戶端是否已經安裝了JWS的用戶端的代碼,樣本如下:
五:JNLP檔案
第一步:下面我們來編寫JWS的核心設定檔JNLP,有了它,才能將以上各部分聯絡起來,真正讓JWS運轉起來。JNLP檔案符合標準的XML文法,實質就是一個XML檔案。當然,編寫它的最好方式是對已寫好的JNLP進行改寫。JWSTest.jnlp樣本如下:
spec="1.0+"
codebase="http://你的IP:8080/JWSTest/apps"
href=" JWSTest.jnlp">
YOUR Name
JWS Test
第二步:部分JNLP的關鍵文法
元素
spec:必須是1.0及以上版本,這裡用1.0+,不需修改。
codebase:資源的URL,是JNLP指向各串連的起始處,需自行修改。
Href:JNLP檔案相對codebase的存放位置,和JNLP檔案的全名,需自行修改。
元素
Title:發布的應用程式簡單標題,需自行修改。
Vendor:發行商資訊,可以寫上你的大名,需自行修改。
Homepage:存放有關應用程式的相關文檔的URL,如help檔案等,可有可無。
Description:對應用程式的描述,可以有多對,可有可無。
Icon:使用者下載你的應用程式後,在JWS裡顯示的表徵圖的URL,應是gif或jpeg格式。需自行修改。
Offline-allowed:選擇項,允許使用者離線運行應用程式,一般都會有,不用修改。
元素
選擇項,如果沒有指明,預設是不允許應用程式訪問使用者的本地資源,即應用程式是沙箱運行。
如果設定為,則表示允許應用程式訪問使用者的本地資源。一般都會設定此值。
元素
元素
main-class:應用程式運行啟動的主類
:應用程式運行時的參數,可以有多個,每一個參數用一對參數。
至此,你已經完全構建了運轉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。
在其中添加
application/x-java-jnlp-file
以支援JNLP檔案。
問題二:不能下載資源或下載資源失敗
解決辦法:請卸載JWS的用戶端,並將註冊表裡有關JWS的項目都刪除,並確保program Files下的Java Web Start目錄已被刪除,然後,重裝JWS。
問題三:下載資源中有未簽名檔案
解決辦法:1:確保所有的jar包及其他資源都進行過簽名。
2:確保整個資源中,沒有中文的命名。好像簽名工具不支援中文命名的檔案名稱,所以未簽到名。這可讓我鬱悶了一下午哦。
3:察看已經簽名的jar包中,meta-inf路徑下的jwstest.sf(jwstest是你在進行簽名時-alias後的命名)檔案,他詳細的列出了所有已簽名的檔案,以分析簽名失敗的原因。