2017-09-06 46 views
0

我有可在我的網站上下載的Java FX應用程序。我正在尋找一種方法來遠程和唯一地識別每個下載的應用程序。是否可以在下載之前立即將id(例如txt文件中)存儲到Java FX應用程序的包中?Java FX應用程序 - 每個分配的唯一標識

感謝您的任何建議

+1

一個jar文件基本上是一個zip文件。你可以在沒有包含id的文本文件的情況下存儲jar文件,然後在每個請求上(我假設你正在使用一些基於Java servlet的web技術,儘管你可以用其他技術來做到這一點),創建id,創建一個' ZipOutputStream'將數據發送回客戶端,創建一個'ZipEntry'來包含帶有id的文本文件,將該條目發送給zip輸出流,然後迭代退出的jar文件中的zip條目並將其發送給'ZipOutputStream'。從來沒有嘗試過,但它應該工作。 –

+0

感謝您的建議!我想知道是否有更「漂亮」的解決方案,或者如果擁有帶id的文件是標準解決方案。 –

回答

2

每次分發的時候,你可以嘗試signing and timestamping the jar file分配。這樣,您可以確保文件不被篡改,並且它是本地簽名和時間戳,或者在您需要時提供的服務回調中。

也考慮java-webstart引用here

是的,如果需要,可以將簽名和webstart技術一起使用。這兩種技術可以單獨使用或一起使用,因此您可以選擇適合您的應用程序的內容。請參閱javapackager documentation瞭解有關Web啓動打包過程的更多詳細信息(請參閱文檔並參考參考jnlp的章節)。請注意,web start目前僅適用於Oracle JDK(據我所知)。

爲了您的目的,您可以創建一個腳本,該腳本在每個下載請求上執行以生成unique id或時間戳(或從時間戳服務獲取時間戳),並在簽名並將其提供下載包之前將其添加到包中。您可以將下載實例UUID和時間戳與引用IP地址或用戶標識(如果您的網站上有登錄系統)一起添加到服務器端數據庫,以跟蹤誰在什麼時間下載了什麼內容。

如果使用webstart,則使用鏈接文檔中提到的JNLP部署。可以選擇將JNLP封裝成與網頁上的一些Javascript進行交互,這可以減少網絡流量並加速下載和使用過程。複雜的部署機制可以動態生成該下載包,以及帶有嵌入JNLP數據的Javascript調用的下載頁面。這些系統的細節或樣本超出了我可以在此提供的信息的範圍。