2010-08-25 49 views
1

我們必須使用JWS在互聯網上提供Java應用程序演示。它非常好;所缺少的就是讓工作目錄文件可供應用程序使用。如何使工作目錄文件可用於WebStart應用程序?

我們知道getResource()方法......問題是我們針對同一個應用程序有不同的插件,每個插件都需要不同的文件(通常是相同文件的不同版本)才能正常工作。因此,當我們希望應用程序具有不同的行爲時,我們只需更改工作目錄。

目前,演示程序打包在簽名的jar文件中,並且它正確加載,直到它需要工作目錄中的文件。顯然,這個演示的互聯網用戶沒有準備好文件。我們需要一種方法將這些文件提供給WebStart應用程序(讀/寫訪問)在其工作目錄中。

我們已經想到了一些事情,比如讓應用程序在啓動時自行下載文件,或者將它們打包到jar中並在啓動時解壓縮它們。

尋找建議和/或新想法。我會繼續努力......如果我找到可靠的東西,我會更新。

非常感謝!

回答

0

請注意,您可以明確要求提供一項服務以獲取文件訪問權限(除非您完全按照要求提供完整訪問權限(需要簽名的jar文件))。

然後,你需要確定這些文件需要去哪裏 - 基本上你不知道什麼地方以及你是否可以在任何地方寫字。您可以創建tmp文件,但這些文件會消失。

將文件系統抽象與JNLP服務器交談是否會將用戶數據存儲在服務器上?

1

我說我會分享我在研究中發現的東西,以滿足我的需求。這是迄今爲止我所擁有的。

我發現當前工作目錄(CWD)的概念在Java Web Start(JWS)應用程序的上下文中沒有意義。這樣做的結果是我停止了試圖找到JWS的CWD並開始尋找其他選項。

我發現(不,我不知道)你可以通過在它的名字前加一個'/'來引用(使用getResource())到一個JAR文件的根目錄下的文件。 (例如,「/log4j.properties」)。這樣做的影響是我現在可以在JAR文件的根目錄中以只讀方式引用任何文件(這實際上只是一個ZIP文件)。您可以使用AnyClass.class.getResourceAsStream引用JAR文件根目錄中的任何文件。這就排除了運行應用程序所需的只讀文件的問題,代碼中的開關代碼告訴應用程序是從有效的CWD還是從JWS上下文運行。 (您可以非常簡單地在JWS應用程序的JNLP文件中設置一個屬性,並檢查該屬性是否設置或不知道該在哪裏查找文件。)

對於只寫文件(在我的情況下是日誌文件),我使用了該屬性,添加一個具有應用程序名稱的目錄:< user.home> /。appname並向其添加了日誌文件。

讀寫文件(我沒有在我的情況下)可能只是在與只寫文件相同的地方。如果需要的話,該軟件可以將它們上傳到某處,一旦修改,我想。

這就是我現在處理問題的方式。

相關問題