国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用 Java Web Ststar 部署基于 Eclipse 的應(yīng)用程序

在 IBM Bluemix 云平臺上開發(fā)并部署您的下一個應(yīng)用。

現(xiàn)在就開始免費試用

開始之前

關(guān)于本教程

在開始構(gòu)建應(yīng)用程序時,我決定使用 Java 編程語言作為實現(xiàn)語言。我希望編寫可以在 Microsoft? Windows?、Linux? 或 Mac OS X 上運行的應(yīng)用程序。應(yīng)用程序需要使用本地資源,因此將它作為獨立應(yīng)用程序來構(gòu)建要比作為 Web 應(yīng)用程序更加有意義。但是,我在部署時遇到了麻煩。我希望能夠方便地部署應(yīng)用程序來完成初始安裝,并希望能夠方便地推出更新,而不需要在應(yīng)用程序中構(gòu)建更新框架。通過 JWS 技術(shù), 您只需一個單擊操作便可將應(yīng)用程序部署到 Internet 上。

如果您能夠在 Eclipse Platform 上構(gòu)建應(yīng)用程序,那么通過結(jié)合 JWS,您可以比構(gòu)建和推出安裝程序更加輕松地部署一些重要的企業(yè)級工具。

本教程演示如何構(gòu)建基于 Eclipse Platform 的應(yīng)用程序,以及如何通過 JWS 部署該應(yīng)用程序。不要將它與在 Eclipse 中使用 Standard Widget Toolkit (SWT) 構(gòu)建 Rich Client Platform (RCP) 應(yīng)用程序,以及使用 JWS 分發(fā)它相混淆(參考資料 小節(jié)提供了如何實現(xiàn)此任務(wù)的相關(guān)教程)。

目標(biāo)

閱讀本教程之后,您應(yīng)該能夠使用 JSW 開發(fā)擴(kuò)展 Eclipse Platform 的產(chǎn)品,并部署基于 Eclipse 的應(yīng)用程序。

先決條件

您應(yīng)該熟悉 Eclipse 和 Java 編程語言。在閱讀 XML 示例時,了解 XML 知識將有所幫助。

系統(tǒng)需求

要運行示例,您必須安裝和運行 Eclipse V3.3 或 更新版本。您還需要 Java V1.5 或更新版本。要運行 JWS 示例,您需要訪問運行中的 Web 服務(wù)器,并能向 Web 服務(wù)添加 MIME 類型關(guān)聯(lián)(如果未正確配置)。理想情況下,您應(yīng)該擁有可用于測試的本地開發(fā) Web 服務(wù)器。

回頁首

Eclipse Framework 概述

Eclipse Java 集成開發(fā)環(huán)境 (IDE) 構(gòu)建于 Eclipse Platform 之上。大多數(shù)人使用的默認(rèn) Java IDE 是帶基本插件集的標(biāo)準(zhǔn) Eclipse Platform,這些插件將自動安裝在可下載的 Eclipse 分發(fā)版中。這些插件為用戶提供了與 IDE 相類似的體驗。

在 Eclipse 站點中,您可以僅下載 Eclipse Platform 軟件開發(fā)包 (SDK)。借助 Eclipse Platform SDK,您需要安裝額外插件才能進(jìn)行 Java 開發(fā)。如果您嘗試使用向?qū)?chuàng)建新項目,則會發(fā)現(xiàn)沒有常用的可用向?qū)Вū热?Java Project)。由于行為有限,Eclipse Platform SDK 就其自身來說并不是特別實用。但 Eclipse Platform SDK 提供了一個用于構(gòu)建應(yīng)用程序的框架,所以通過它來構(gòu)建更加強(qiáng)大的工具是非常有用的。

在 Eclipse Platform 上構(gòu)建了特性,并且擁有自己的應(yīng)用程序之后,下一步就是將它部署到您的用戶。您可以使用 JWS 機(jī)制來部署 Java 應(yīng)用程序。使用 Java 語言編寫的 Eclipse 也不例外。當(dāng)用戶單擊鏈接時,JWS 使您能夠輕松地通過 Internet 部署應(yīng)用程序。

RCP 應(yīng)用程序

借助 Eclipse,您還可以使用 SWT 構(gòu)建 RCP 應(yīng)用程序。此流程與構(gòu)建基于 Eclipse Platform 的應(yīng)用程序產(chǎn)品有所不同。使用 SWT 構(gòu)建的應(yīng)用程序更加簡潔輕巧,并且不需要擴(kuò)展 Eclipse Platform。如果您要構(gòu)建不擴(kuò)展 Eclipse Platform 的應(yīng)用程序,可以考慮使用 SWT;您仍然可以使用 JWS 分發(fā) SWT 應(yīng)用程序。

回頁首

Java Web Start 概述

JWS 允許您將獨立 Java 應(yīng)用程序部署到 Internet 上,這只需一個單擊操作即可完成。您的用戶單擊到擴(kuò)展名為 .jnlp(Java Network Launch Protocol)的 XML 文件的鏈接,其他任務(wù)將由 JWS 完成。使用 JNLP,JWS 將下載所需的文件,緩存它們并啟動應(yīng)用程序。

作為一名開發(fā)人員,您將必要的文件 — 比如 Java Archives (JAR) — 放置在可以通過 Web 服務(wù)器訪問的位置。JNLP 文件包含的信息將通知您用戶計算機(jī)上的 JWS 客戶機(jī)從何處獲取 JAR 文件。因此,不必將獨立 Java 應(yīng)用程序部署到用戶的所有計算機(jī)中,您只需將應(yīng)用程序部署到您的 Web 服務(wù)器。您的用戶將從中訪問應(yīng)用程序。

除了部署之外,JWS 還極大地簡化了更新。當(dāng) JWS 應(yīng)用程序啟動時,用戶計算機(jī)上的 JWS 客戶機(jī)將嘗試找到服務(wù)器,并確??蛻魴C(jī)擁有最新的文件。如果本地文件已經(jīng)過期,那么它會自動將更新文件下載到客戶機(jī)中。更新對于用戶或多或少是透明的,這提供了一個理想的環(huán)境來部署基于 Eclipse Platform 的應(yīng)用程序。

安全性

應(yīng)用程序通常要求用戶具備較高的權(quán)限來安裝它們。用戶需要比平常具備更高的權(quán)限,這將阻礙用戶在計算機(jī)中安裝應(yīng)用程序 — 特別是在大公司中。由于 JWS 將 JAR 緩存在非系統(tǒng)目錄中,因此用戶不需要提升權(quán)限便可在本地安裝和運行 JWS 應(yīng)用程序。 相對受限的用戶能夠利用 JWS,這是在大型組織中考慮使用 JWS 進(jìn)行部署的另一個具有說服力的原因。

JWS 在 “沙箱化” 執(zhí)行中運行應(yīng)用程序,這類似于 Java applet。JNLP 文件中的條目(詳見下文)允許您請求訪問系統(tǒng)和網(wǎng)絡(luò)的許可。要請求所有許可,您必須對 JAR 進(jìn)行簽名。只要您有密鑰庫,Eclipse 就會替您完成此任務(wù)。(關(guān)于配置 Eclipse 使用您的密鑰庫的更多信息請參見 “封裝應(yīng)用程序” 小節(jié))。

離線運行

當(dāng)您的用戶下載并初次應(yīng)用程序之后,并且 JWS 在其本地緩存中擁有所需的資源,則您的用戶可以隨意使用應(yīng)用程序而不需要連接到 Internet(只要您的應(yīng)用程序不需要連接到 Internet)。JWS 可以僅使用本地緩存的資源來運行應(yīng)用程序。

回頁首

設(shè)置

安裝 JWS

如果您擁有 Java Platform, Standard Edition (Java SE) V5 或更高版本,那么它已經(jīng)安裝了 JWS。如果您使用 Windows,則 JWS 安裝在 Java 主目錄中(例如 C:\Program Files\Java\jre\bin)。在 On Mac OS X 上,JWS 位于 Applications/Utilities/Java。您可以直接啟動 JWS 控制臺,而不需要實際安裝或運行 JWS 應(yīng)用程序。

通過啟動 JWS 控制臺,您可以在 JWS 緩存中查看應(yīng)用程序。在控制臺中,您可以啟動已經(jīng)安裝的任何 JWS 應(yīng)用程序,從緩存中刪除它們,或安裝到應(yīng)用程序的快捷方式。要啟動控制臺,鍵入以下命令,確保 Java 在您的路徑中:

javaws -viewer

啟動后,查看器將如圖 1 所示。如果從未使用過 JWS,那么可能未安裝任何應(yīng)用程序。

圖 1. Java Web Start 查看器

如果未安裝 Java Runtime Environment (JRE),請下載最新版本的 JRE 并安裝它。只要它是 Java SE V5 或更高版本,其中就包括 JWS。

配置 Web 服務(wù)器

在大多數(shù)情況下,JWS 應(yīng)該會在您打開 JNLP 文件時自動啟動。如果 JNLP 文件位于未正確關(guān)聯(lián) JNLP 文件的 Web 服務(wù)器上,那么您可以下載文件并在本地打開它。實際上,我之前通過電子郵件向其他人發(fā)送過 JNLP 文件 — 資源仍然位于文件中的 URL 指定的地址,并且接收者能夠使用 JWS 成功運行應(yīng)用程序。

如果您將設(shè)置一臺 Web 服務(wù)器來托管 JNLP 文件(這是最簡單的分發(fā)方法),那么您需要添加以下文件關(guān)聯(lián):

application/x-java-jnlp-file JNLP

依照您 Web 服務(wù)器的文檔來正確設(shè)置 MIME 關(guān)聯(lián)。如果您使用的是 ISP,那么可以參考 ISP 的文檔來了解如何添加 JNLP MIME 類型。

JNLP 文件結(jié)構(gòu)

JNLP 文件是一個 XML 文件,其中定義了 JWS 如何下載和使用應(yīng)用程序。它將幫助您理解 JNLP 文件的不同部分,讓您有把握地修改它。

清單 1 顯示了一個基本的 JNLP 文件。它只包含通過 JWS 分發(fā)獨立應(yīng)用程序所需的基本元素。

清單 1. 基本 JNLP 文件
<?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+" codebase="http://www.example.com/applications/" href="app.jnlp">  <information>    <title>Application Title</title>    <vendor>Application Vendor</vendor>    <homepage  />    <description>This is an applicatio,.</description>  </information>  <security>    <all-permissions />  </security>  <!-- The name of the main class to execute. -->  <application-desc main-class="com.example.MyMainClass">  </application-desc>  <resources>    <jar href="exampleApp.jar" />  </resources></jnlp>

清單 1 中的示例將告訴 JWS 從 URL 下載 exampleApp.jar 文件。完整的 URL 為 http://www.example.com/applications/exampleApp.jar。下載 JAR 后,JWS 將執(zhí)行 com.example.MyMainClass 類。假定類需要運行的一切內(nèi)容都包含在 exampleApp.jar 中,它會在用戶自己執(zhí)行初始化時運行。此文件相當(dāng)于運行以下命令:

java -cp exampleApp.jar com.example.MyMainClass

在本例中,由于出現(xiàn)了 <all-permissions> 元素,因此必須對 exampleApp.jar 進(jìn)行簽名。

<jnlp> 元素是文件的根元素,它的屬性如表 1 所示。

表 1. <jnlp> 元素屬性
屬性描述
spec此文件將遵循的最小版本的 JNLP 規(guī)范
codebase應(yīng)用程序的基本 URL(文件中的其他 URL 將相對于此基本 URL)
hrefJNLP 文件自身的 URL(JNLP 文件可以離線使用,并且此 URL 將告訴 JWS 在哪里可以找到在線版本的文件)
version應(yīng)用程序和 JNLP 文件的版本(在構(gòu)建 JWS 應(yīng)用程序時,將它們看作是相同的)

<information> 元素的屬性如表 2 所示。

表 2. <information> 元素的屬性
屬性描述
osJWS 應(yīng)用程序支持的操作系統(tǒng)
arch支持的架構(gòu)(處理器)
platform支持的平臺
locale支持的區(qū)域

其他必要元素:

  • <title> 元素包含應(yīng)用程序的標(biāo)題。它顯示在 JWS 控制面板中。當(dāng)用戶使用 JWS 啟動應(yīng)用程序時,它也會顯示。
  • <vendor> 元素包含應(yīng)用程序軟件供應(yīng)商的名稱。
  • <resources> 元素包含與應(yīng)用程序所需資源相關(guān)的信息。此處的資源包括 JAR,其中包含應(yīng)用程序使用的或應(yīng)用程序可以設(shè)置及使用的屬性。通常,資源可以列出在表 3 所示的任何一個元素中(完整清單請參見 參考資料 小節(jié))。
表 3. 典型的 <resource> 元素
元素描述
<jar>包含到 JAR 的 hrefhref 屬性
<nativelib>包含到本機(jī)庫 JAR 的 hrefhref 屬性
<j2se>指定給虛擬機(jī) (VM) 的版本和參數(shù)
<property>指定可由 System.getProperty 找到的屬性

有關(guān) JNLP 文件的完整語法,請參見 參考資料 小節(jié) Sun Microsystems 文檔鏈接。

回頁首

構(gòu)建基本的基于 Eclipse 的應(yīng)用程序

現(xiàn)在,您應(yīng)該已經(jīng)理解了 JNLP 文件的作用,以及使用 JWS 部署應(yīng)用程序需要在該文件中包含哪些信息。您應(yīng)該已經(jīng)建立了一臺 Web 服務(wù)器,并且可以通過正確的關(guān)聯(lián)啟動 JNLP 文件。具備對 JWS 和 JNLP 文件的基本理解之后,您可以開始構(gòu)建基于 Eclipse 的應(yīng)用程序。

安裝 Eclipse

首先,您需要下載 Eclipse Platform SDK(如果您尚未安裝 Eclipse)。如果您已經(jīng)安裝了 Eclipse,則可以使用已有版本。安裝好 Platform SDK 之后,您還需要安裝 Eclipse Plug-in Development Environment 特性(圖 2 給出了在安裝程序中選中該特性的例子)。要了解關(guān)于在 Eclipse 中安裝插件的更多信息,請參見 參考資料 小節(jié)。

圖 2. 選擇 Eclipse Plug-in Development Environment

創(chuàng)建新產(chǎn)品

簽出示例

要在 Eclipse 中查看示例,需簽出示例 Web 瀏覽器。代碼可通過 Concurrent Versions System (CVS) 獲得。為此,您必須在計算機(jī)安裝一個 CVS 客戶端。您可以使用以下命令將項目簽出:cvs -d :pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse export -r HEAD org.eclipse.ui.examples.rcp.browser。將項目簽出到本地之后,您可以將它導(dǎo)入到 Eclipse 工作空間中。

要了解 JWS 部署的實際情況,需要創(chuàng)建一個新產(chǎn)品。您的產(chǎn)品將包含一個應(yīng)用程序,它會在 Eclipse 啟動程序(launcher)啟動 Eclipse 平臺時自動加載。

該應(yīng)用程序提供了一個簡單的視圖,您可以通過它了解應(yīng)用程序是否已正常加載,這與經(jīng)典的 Hello World 應(yīng)用程序相似。視圖將在工作臺的新視區(qū)(perspective)中打開。這些類的 Unified Modeling Language (UML) 范例如圖 3 所示。

圖 3. 產(chǎn)品的基本類的 UML

考慮到簡潔性,我已經(jīng)保持這些類盡可能簡單。它們足以顯示一個新的自定義產(chǎn)品正被加載到它自己的自定義視圖中。如果您構(gòu)建了自己的產(chǎn)品,那么可以添加菜單欄、其他視圖、幫助屏幕等。要添加這些自定義特性,請參見 參考資料 小節(jié)獲取關(guān)于擴(kuò)展 Eclipse 的更多信息。

要構(gòu)建一個簡單的產(chǎn)品示例,首先應(yīng)構(gòu)建一個新的插件項目。選擇 File > New > Project。在 Select a wizard 窗口中,展開 Plug-in Development,然后選擇 Plug-in Project,如圖 4 所示。單擊 Next 以繼續(xù)。

圖 4. 選擇插件項目

Project name 中,鍵入合適的項目名稱。我比較愿意使用插件的基本包名作為項目名稱,比如 com.nathanagood.examples.rcp.simpleApp。Eclipse 的插件項目似乎采用的也是這種命名方式,因此我遵循此命名約定。鍵入項目名稱之后,保留其他值為默認(rèn)值不變。

圖 5. 輸入項目信息

Plug-in Content 窗口中(如圖 6 所示),您可以調(diào)整插件的名稱、提供商的名稱以及它們的版本。我在 Plug-in ID 的默認(rèn)值后面添加了 .plugin,但僅僅是出于個人喜好。完全沒有必要修改它們。如果您希望修改 Activator 類的名稱或類的包名,那么可以在此窗口中完成。完成所有修改之后,單擊 Next

圖 6. 輸入插件內(nèi)容

Templates 頁面(如圖 7 所示)包含一個模板列表,您可以通過這些模板開始創(chuàng)建插件。由于我希望創(chuàng)建一個示例視圖,然后再向其添加產(chǎn)品和應(yīng)用程序擴(kuò)展,因此我選擇的是 Plug-in with a view。選擇希望使用的模板,然后單擊 Finish 構(gòu)建項目。

圖 7. 選擇模板

完成示例項目

現(xiàn)在,您已經(jīng)創(chuàng)建了一個帶視圖的新插件項目。依照以下步驟完成示例項目的構(gòu)建:

  1. 展開 WorkbenchAdvisor 類(在本例中為 SimpleApplicationAdvisor)。

    該類中的一個方法將返回在應(yīng)用程序初始化時加載的視區(qū) ID,以便您可以立即看到帶自定義視圖的自定義視區(qū),而不會看到 Welcome 工作臺。

  2. 創(chuàng)建一個 IPerspectiveFactory 的實現(xiàn)(即 SimpleAppPerspectiveFactory)。

    通過修改傳遞給 createInitialLayout() 方法的 IPageLayout,工廠將創(chuàng)建您的初始視區(qū)。

  3. 展開 WorkbenchWindowAdvisor(即 SimpleWindowAdvisor)。

    通過覆蓋 preWindowOpen(),您可以設(shè)置工作臺的初始大小和其他屬性。

  4. 創(chuàng)建一個 IApplication 的實現(xiàn)( SimpleApplication)。

    該實現(xiàn)類創(chuàng)建并運行您的自定義工作臺配置,以便在啟動時加載您的視區(qū)和視圖。

這些類的示例可以從本教程提供的 代碼示例 中獲取。

修改 plugin.xml 文件

創(chuàng)建好這些類之后,修改 plugin.xml 文件,添加與剛才創(chuàng)建的所有類相關(guān)聯(lián)的擴(kuò)展點。像本教程這樣先編寫所有類的優(yōu)點在于,您可以使用圖形編輯器來為 plugin.xml 文件選擇擴(kuò)展點和類。雖然您也可以方便地手動編輯源 XML,但使用 GUI 添加擴(kuò)展點可以減少錯誤輸入類名或擴(kuò)展點的可能性。當(dāng)我錯誤輸入 ID 或類名后,復(fù)制和粘貼性錯誤成了故障診斷的主要原因。

圖 8 顯示了圖形 Plug-in Manifest Editor 的 Extensions 選項卡上的擴(kuò)展點。

圖 8. 擴(kuò)展點

清單 2 顯示了 plugin.xml 文件的一個例子。

清單 2. 示例 plugin.xml 文件
<?xml version="1.0" encoding="utf-8"?><?eclipse version="3.2"?><plugin>  <extension point="org.eclipse.ui.views">    <category name="Sample Category"    id="com.nathanagood.examples.rcp.simpleApp.plugin"></category>    <view name="Sample View" icon="icons/sample.gif"    category="com.nathanagood.examples.rcp.simpleApp.plugin"    class="com.nathanagood.examples.rcp.simpleapp.plugin.views.SampleView"    id="com.nathanagood.examples.rcp.simpleapp.plugin.views.SampleView">    </view>  </extension>  <extension point="org.eclipse.ui.perspectives">    <perspective id="com.nathanagood.examples.rcp.simpleApp.plugin.perspective"    name="Simple App Perspective"    class="com.nathanagood.examples.rcp.simpleapp.SimpleAppPerspectiveFactory"    fixed="false" />  </extension>  <extension point="org.eclipse.ui.perspectiveExtensions">    <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">      <view ratio="0.5" relative="org.eclipse.ui.views.TaskList"      relationship="right"      id="com.nathanagood.examples.rcp.simpleapp.plugin.views.SampleView">      </view>    </perspectiveExtension>  </extension>  <extension point="org.eclipse.help.contexts">    <contexts file="contexts.xml"></contexts>  </extension>  <extension point="org.eclipse.core.runtime.products"  id="product">    <product name="Simple App"    application="com.nathanagood.examples.rcp.simpleApp.plugin.app">      <property name="appName" value="Simple App" />    </product>  </extension>  <extension id="app"  point="org.eclipse.core.runtime.applications">    <application>      <run class="com.nathanagood.examples.rcp.simpleapp.SimpleApplication">      </run>    </application>  </extension></plugin>

添加配置文件

修改和保存 plugin.xml 文件之后,下一步是添加產(chǎn)品配置文件,該文件通知 Eclipse Platform 關(guān)于您產(chǎn)品的信息:

  1. 選擇 File > New > Product Configuration。

    此時將出現(xiàn) Product Configuration 窗口。

    圖 9. 產(chǎn)品配置
  2. 選擇您的插件項目作為父文件夾。
  3. 添加文件名稱(例如 SimpleApplication.product)。
  4. 選擇 Use an existing product,然后從列表中選擇您產(chǎn)品的 ID。

    它就是您在 org.eclipse.core.runtime.products 擴(kuò)展點下面的 plugin.xml 文件中定義的產(chǎn)品 ID。

添加產(chǎn)品配置文件之后,您可以使用圖形 Product Configuration Editor 編輯產(chǎn)品的詳細(xì)信息。在 Overview 選項卡中,單擊 Synchronize 確保配置是最新的?,F(xiàn)在,您可以單擊 Launch an Eclipse Application(如圖 10 所示)來測試您的產(chǎn)品。如果您需要調(diào)試它,請單擊 Launch an Eclipse application in Debug mode。

圖 10. 啟動 Eclipse 應(yīng)用程序

運行產(chǎn)品

在繼續(xù)之前,確保您可以成功運行您的產(chǎn)品?,F(xiàn)在確保正常運行可以避免以后的問題和故障診斷。啟動后的代碼如圖 11 所示。

圖 11. 簡單的示例應(yīng)用程序

回頁首

封裝應(yīng)用程序

現(xiàn)在,您應(yīng)該已經(jīng)對 JWS 和 JNLP 文件有了基本的理解。您應(yīng)該已經(jīng)建立了一個 Web 服務(wù)器,可以通過它來發(fā)布產(chǎn)品的文件和 JNLP 文件,并且,您應(yīng)該可以從 Eclipse IDE 中啟動您的工作產(chǎn)品。完成所有這些任務(wù)之后,您可以構(gòu)建一個包裝器特性,并使用它來發(fā)布您的產(chǎn)品。

創(chuàng)建包裝器特性

包裝器特性僅僅是一個由兩個文件組成的特性項目,每個文件都包含到產(chǎn)品插件和運行產(chǎn)品插件所有的任何插件和特性的引用。要添加新包裝器特性,選擇 File > New > Project。然后,在 Select a wizard 窗口中,展開 Plug-in Development 并選擇 Feature Project,如圖 12 所示。

圖 12. 創(chuàng)建新特性項目

Feature Properties 窗口中,鍵入項目名稱、特性 ID、版本和提供商信息,如圖 13 所示。然后,單擊 Next。

圖 13. 編輯特性屬性

Referenced Plug-ins and Fragments 窗口中,如圖 14 所示,選擇 Initialize from a launch configuration,然后從列表中選擇產(chǎn)品配置文件的名稱(例如 SimpleApp.product)。完成后,單擊 Finish

圖 14. 選擇產(chǎn)品配置

創(chuàng)建密鑰庫

要通過 JWS 部署插件和特性,您必須對 JAR 進(jìn)行簽名。對 JAR 進(jìn)行簽名需要一個密鑰庫,您可以使用 Java 軟件開發(fā)包 (JDK) 隨帶的 Java keytool 來生成它。有關(guān)創(chuàng)建密鑰庫的更多信息,請參見 參考資料 小節(jié)。

新的特性將包含兩文件:build.properties 和 feature.xml。feature.xml 文件有一個與圖形產(chǎn)品配置和插件編輯器相似的圖形編輯器。打開 feature.xml 文件的圖形編輯器。

Plug-ins 選項卡中,確保您的產(chǎn)品插件列于其中。此外,驗證 org.eclipse.equinox.launcher 插件也列于其中。在 Features 選項卡中,添加您插件或特性需要的任何額外特性。如果您急于使用 JWS 查看您的產(chǎn)品,則可以選擇所有項目;這不會造成任何損害,僅僅會影響您應(yīng)用程序的目錄大小。但是,在真實世界的產(chǎn)品中,您應(yīng)該跟蹤依賴關(guān)系,以確保下載的文件盡可能小。

導(dǎo)出包裝器特性

選擇插件和特性之后,您可以將特性包裝器項目導(dǎo)出到某個目錄中。要導(dǎo)出項目,選擇 File > Export。在 Select 窗口中,展開 Plug-in Development,然后單擊 Deployable Features,如圖 15 所示。單擊 Next

圖 15. 創(chuàng)建可部署的特性

現(xiàn)在:

  1. Deployable features 窗口中選擇您的特性,如圖 16 所示。
    圖 16. 選擇要部署的特性
  2. Destination 選項卡中,單擊 Directory 并鍵入要在其中發(fā)布文件的目錄的名稱。該目錄必須位于網(wǎng)絡(luò)文件下,以便可以通過您在 Java Web Start 選項卡中提供的 URL 來訪問它。
  3. Options 選項卡中,選擇 Package as individual JAR archives。
  4. JAR Signing 選項卡中,選擇 Sign the JAR archives using a keystore。然后,瀏覽到密鑰庫位置并鍵入別名(alias)和密碼。

    注意:如果您沒有密鑰庫,請參見 參考資料 小節(jié),獲取這方面的信息。

  5. Java Web Start 選項卡中,選擇 Create JNLP manifests for JAR archives。
  6. Site URL 更新為 JWS 目錄的基本 URL。在瀏覽器中訪問此 URL 時,它應(yīng)該會訪問您在 Destination 選項卡中輸入的目錄。
    圖 17. 設(shè)置 JWS 屬性

更新了與特性部署相關(guān)的信息后,單擊 Finish。Eclipse 將導(dǎo)出所提供目錄中的信息。根據(jù)所選擇的插件和特性的數(shù)量,以及您的硬件資源,它可能需要花費一些時間來導(dǎo)出特性。當(dāng) Eclipse 完成此任務(wù)后,所提供的目錄中將包括兩新目錄:features 和 plugins。您特性的 JNLP 文件將包含在 features 目錄中。清單 3 給出了 features 目錄中的內(nèi)容的一個例子。

Listing 3. features 目錄的內(nèi)容
$ lscom.nathanagood.examples.simpleApp.feature_1.0.0.jarcom.nathanagood.examples.simpleApp.feature_1.0.0.jnlporg.eclipse.equinox.p2.user.ui.source_1.0.1.r34x_v20080721-7d-7OEMsLAz-vTBJ.jarorg.eclipse.equinox.p2.user.ui.source_1.0.1.r34x_v20080721-7d-7OEMsLAz-vTBJ.jnlporg.eclipse.equinox.p2.user.ui_1.0.1.r34x_v20080721-7d-7OEMsLAz-vTBJ-ZHQaF155CE.jarorg.eclipse.equinox.p2.user.ui_1.0.1.r34x_v20080721-7d-7OEMsLAz-vTBJ-ZHQaF155CE.jnlporg.eclipse.help.source_1.0.1.R34x_v20080827-7r7xEIxEI6Zu5nEqN7M3UBpglaat.jarorg.eclipse.help.source_1.0.1.R34x_v20080827-7r7xEIxEI6Zu5nEqN7M3UBpglaat.jnlpor,.eclipse.help_1.0.1.R34x_v20080827-7r7xEIxEI6Zu5nEqN7M3UBpglaat.jarorg.eclipse.help_1.0.1.R34x_v20080827-7r7xEIxEI6Zu5nEqN7M3UBpglaat.jnlporg.eclipse.platform.source_3.4.1.r341_v20080731-9I96EiDElYevwz.jarorg.eclipse.platform.source_3.4.1.r341_v20080731-9I96EiDElYevwz.jnlporg.eclipse.platform_3.4.1.r341_v20080731-9I96EiDElYevwz-p1bP5z-NlAaP7vtX6Utotqsu.jarorg.eclipse.platform_3.4.1.r341_v20080731-9I96EiDElYevwz-p1bP5z-NlAaP7vtX6Utotqsu.jnlporg.eclipse.rcp.source_3.4.100.r341_v20080814-989JESIEdAciFYfkZZsBfSwQ2341.jarorg.eclipse.rcp.source_3.4.100.r341_v20080814-989JESIEdAciFYfkZZsBfSwQ2341.jnlporg.eclipse.rcp_3.4.100.r341_v20080814-989JESIEdAciFYfkZZsBfSwQ2341.jarorg.eclipse.rcp_3.4.100.r341_v20080814-989JESIEdAciFYfkZZsBfSwQ2341.jnlp

將包裝器特性成功導(dǎo)入到可從 Web 服務(wù)器訪問的目錄之后,下一步是構(gòu)建應(yīng)用程序的主 JNLP 文件。

回頁首

JNLP 文件

在本節(jié)中,您將構(gòu)建和發(fā)布您的 JNLP 文件。然后,您將測試部署并執(zhí)行任何必要的故障診斷。

構(gòu)建 JNLP 文件

現(xiàn)在,您應(yīng)該已經(jīng)成功將特性導(dǎo)出到某個目錄中,并已驗證可以通過 Web 服務(wù)器訪問 features 和 plugins 目錄?,F(xiàn)在為您的應(yīng)用程序編寫 JNLP 文件。下面給出了 JNLP 文件的一個完整示例。

清單 4. 簡單應(yīng)用程序的示例 JNLP 文件
<?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+"      codebase="http://localhost/~user/jws2" href="simpleapp.jnlp">  <information>    <title>SimpleApp Test</title>    <vendor>Nathan Good</vendor>    <homepage  />    <description>This is my simple JWS Eclipse      application test.</description>  </information>  <!--request all permissions from the application. This does not change-->  <security>    <all-permissions />  </security>  <!-- The name of the main class to execute. This does not change-->  <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">  </application-desc>  <resources>    <jar href="plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar"/>    <extension name="Simple App Feature"      href="features/com.nathanagood.examples.simpleApp.feature_1.0.0.jnlp" />    <property name="eclipse.product"      value="com.nathanagood.examples.rcp.simpleApp.plugin.product" />  </resources>  <resources os="Mac">    <j2se version="1.5+" java-vm-args="-XstartOnFirstThread" />  </resources>  <resources os="Windows">    <j2se version="1.4+" />  </resources>  <resources os="Linux">    <j2se version="1.4+" />  </resources></jnlp>

在此 JNLP 文件中,codebase 屬性的值設(shè)置為在其中發(fā)布包裝器特性的位置的基本 URL。它應(yīng)該與圖 17 中 Deployable features 窗口的 Java Web start 選項卡中所使用的 URL 相匹配。href 屬性是您的 JNLP 文件的名稱。

使用 localhost

您可能已經(jīng)注意到,在本例中,我使用 localhost 作為 URL。它是因為,我使用本地 Web 服務(wù)器測試此應(yīng)用程序,并且實際上沒有將我的文件部署到任何位置。如果您計劃部署此應(yīng)用程序,則不能使用 localhost(但使用它進(jìn)行測試非常好)。確保使用外部可解析的主機(jī)名(比如 myhost.example.com)或直接使用 IP 址。

<information> 元素包含與被分發(fā)的應(yīng)用程序相關(guān)的標(biāo)題、描述和其他信息。<security><application-desc> 元素需要與清單保持 4 一致。

修改 <resources> 元素,在其中包含 <jar> 元素的 Equinox 啟動程序插件的正確版本。您可能需要在 features 目錄中獲取啟動程序的 JAR 的正確完整名稱。隨著新版本文件的推出,清單 4 中列出的名稱可能很快就會過時。

更新 <extension> 元素的 href 屬性,在其中包含包裝器特性的 JNLP 文件的 URL(codebase 屬性中的 URL)。您包裝器特性的 JNLP 文件將包含其他所有需要的特性的特性。

最后,更新 <property> 元素,在其中包含您產(chǎn)品的 ID。此 ID 為插件產(chǎn)品配置文件中的 ID(即 SimpleApp.product)。

發(fā)布 JNLP 文件

現(xiàn)在,您已經(jīng)創(chuàng)建了 JNLP 文件。您可以從 features 和 plugins 目錄導(dǎo)出可部署的部署。特性已經(jīng)包括您的插件和依賴關(guān)系。接下來可以發(fā)布 JNLP 文件。

JNLP 文件所在目錄與 features 和 plugins 目錄相同。它應(yīng)該是您在導(dǎo)出可部署特性時所使用的相同目錄。清單 5 顯示了目錄清單的一個例子。

清單 5. JNLP 文件的目錄清單
drwxr-xr-x   20 user  user   680 Dec 19 09:46 featuresdrwxr-xr-x  280 user  user  9520 Dec 19 09:46 plugins-rw-r--r--    1 user  user  1222 Dec 19 10:05 simpleapp.jnlp

要簡化文件的測試,創(chuàng)建一個簡單的 HTML 頁面并將它命名為 index.html。它應(yīng)該包含如清單 6 所示的代碼。其中 simpleapp.jnlp 已更新為您 JNLP 文件的名稱。

清單 6. 示例 HTML 文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"><html><head><title>My Application</title></head><body><a href="simpleapp.jnlp">My Application</a></body></html>

將 HTML 文件保存在可以從應(yīng)用程序主 JNLP 文件中的 URL 訪問的文件夾中。將 HTML 文件保存在該目錄中之后,目錄清單應(yīng)如清單 7 所示。

清單 7. 目錄中的所有文件
drwxr-xr-x   20 user  user   680 Dec 19 09:46 features-rw-r--r--    1 user  user   288 Dec 19 08:37 index.htmldrwxr-xr-x  280 user  user  9520 Dec 19 09:46 plugins-rw-r--r--    1 user  user  1222 Dec 19 10:05 simpleapp.jnlp

測試部署

現(xiàn)在,您已經(jīng):

  • 理解 JNLP 文件的基本結(jié)構(gòu)。
  • 通過合適的 MIME 類型配置了您的 Web 服務(wù)器。
  • 在插件項目中構(gòu)建了一個基本 Eclipse 產(chǎn)品。
  • 擁有一個包含插件的包裝器特性項目。
  • 將包裝器特性導(dǎo)出到某個目錄中。
  • 為您的應(yīng)用程序創(chuàng)建并保存了一個 JNLP 文件。

現(xiàn)在可以開始測試部署了。打開 Web 瀏覽器并導(dǎo)航到您為 codebase URL 提供的 URL(例如 http://localhost/~user/jws/)。此時應(yīng)打開您在 “發(fā)布 JNLP 文件” 小節(jié)中創(chuàng)建的 index.html。單擊鏈接。只要所有配置正確,就會出現(xiàn)一個 JWS 歡迎屏幕(如圖 18 所示)。然后會顯示應(yīng)用程序的下載進(jìn)度。根據(jù)您的特性及插件的最終大小,以及網(wǎng)絡(luò)連接的狀態(tài),此過程可能需要一些時間。

圖 18. JWS 歡迎屏幕

下載完所有依賴關(guān)系之后,瀏覽器將打開應(yīng)用程序。本例中的簡單視圖如圖 19 所示。

圖 19. 通過 JWS 啟動的簡單應(yīng)用程序

故障診斷

在構(gòu)建第一個通過 JWS 部署的 Eclipse 產(chǎn)品示例時,我遇到了一些問題:

  • JNLP 文件以文本形式顯示在瀏覽器中。如果出現(xiàn)這種情況,最可能的原因是 Web 服務(wù)器的配置中缺少 JNLP 類型的 MIME 類型關(guān)聯(lián)。確保關(guān)聯(lián)了 MIME 類型(參見 “配置您的 Web 服務(wù)器” 小節(jié)。
  • 無法啟動應(yīng)用程序。如果 JWS 出現(xiàn)這種情況,單擊 Details 獲取關(guān)于錯誤的更多信息。如果該錯誤為 java.io.FileNotFoundException,則有可能是因為 URL 不正確造成的。當(dāng)我重新命名初始 JNLP 文件,但忘記更新 <jnlp> 元素的 href 屬性的值時,我遇到了此錯誤。
  • 無法加載資源。與之前的錯誤相似,您需要單擊 Details 才能看到此消息。當(dāng)我嘗試在不同的計算機(jī)上測試應(yīng)用程序時,遇到了這個錯誤。在本例的 URL 中,我使用 localhost 作為主機(jī)的名稱。要解決此問題,將 URL 更改為 IP 地址或用于發(fā)布 JNLP 文件的服務(wù)器的主機(jī)名。
  • JWS 看上去已經(jīng)啟動,但沒有任何內(nèi)容并且 JWS 是關(guān)閉的。造成此問題最有可能的原因是 <resources> 元素中的 eclipse.product 屬性的產(chǎn)品 ID 值不正確。檢查產(chǎn)品 ID 的值,并確保它與產(chǎn)品配置文件中的 ID 相一致(SimpleApp.product)。

回頁首

結(jié)束語

本教程演示了如何構(gòu)建一個簡單的產(chǎn)品 — 在 Eclipse Platform 上構(gòu)建的應(yīng)用程序 — 并使用 JWS 將它部署給您的用戶。通過遵循本文中的步驟并添加您自己的擴(kuò)展,您可以構(gòu)建一個復(fù)雜的、可以從一處部署到許多平臺的應(yīng)用程序。更新非常簡單,只需將更新部署到 JWS 資源所在的目錄。

要成功構(gòu)建產(chǎn)品,您需要對 JNLP 文件的結(jié)構(gòu)有一定的理解。您需要構(gòu)建一個插件,并至少實現(xiàn)一些類。您需要在插件中提供一些擴(kuò)展點。最后,您需要向插件項目添加一個產(chǎn)品配置。

完成插件項目后,您需要構(gòu)建一個包裝器特性,其中應(yīng)包含您的插件和所有其他特性。完成包裝器特性之后,您可以使用一個 Eclipse 向?qū)⒈匾奈募渴鸬侥夸浗Y(jié)構(gòu)中。

一個簡單的 JNLP 文件包含到包裝器特性的 JNLP 文件的引用。它還包含 Eclipse 運行產(chǎn)品所需的任何額外參數(shù),比如啟動產(chǎn)品 ID。

回頁首

下載

描述名字大小
源代碼os-eclipse-jws-code.zip25KB
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
利用 Java Web Start發(fā)布你用java程序
一半是火焰一半是海水: android開發(fā)
Eclipse SWT應(yīng)用程序項目的打包與部署
開發(fā)您的第一個 Eclipse RCP 應(yīng)用程序
三篇關(guān)于Java WebStart的文章
Android開發(fā)學(xué)習(xí)筆記(三)——基于Eclipse開發(fā)環(huán)境的搭建及HelloAndroid示例程序的創(chuàng)建
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服