2011-05-11 50 views
0

我開發了一個基於給定數據集和一系列參數對命令行進行編程的命令行(讀取:無GUI)Java應用程序;並作爲結果報告吐出一系列HTML文件。這些報告在表格中保存了大量數據,因此爲了讓用戶能夠輕鬆快速地查看結果,我使用了JUNG2庫並創建了一個很好的圖表。部署問題,基於Web的Java應用程序需要的建議

這裏是它變得有趣的地方;因爲我希望圖形是交互式的,所以只要用戶想查看報表,就應該在應用程序運行並生成文件後部署。我決定去與一個基於小應用程序的部署,但我不太滿意當前的設置,由於以下原因:

  1. 我想使軟件儘可能的簡單使用(我贏得用戶」不懂技術,甚至在大多數情況下技術恐嚇)。我真的只想分發一個JAR,這迫使我把小程序放在與主應用程序相同的JAR的包中。

  2. 小程序和主應用程序需要傳遞結果,因此我創建了一個用於保存信息的基於xML的報告。只要這些文件在本地機器上,並且沒有移動它,一切正常。不幸的是,我還需要將文件移動。用戶應該能夠將「結果」文件夾存入USB記憶棒,隨時隨地將記憶棒插入另一臺計算機,並能夠按照他/她喜歡的方式使用報告。

暫時的小應用程序與下面的HTML代碼來實現:

<applet code="package.myapp.visualization.GraphApplet.class" 
     codebase="file:/home/user/myApp" 
     archive="myApp-0.2.6-r28.jar" 
     width="750" height="750"> 
    <param name=input value="results/test_name/results.fxml"> 
</applet> 

正如你可以看到,如果父文件夾移動到另一個位置,該applet將無法正常工作。


據我知道我有幾個選擇:

一)更改代碼庫,使其指向我們的Web服務器的URL,我可以把jar文件。但是,這會產生權限問題,因爲applet將無法讀取結果文件。另一種方法是在用戶想要可視化圖形時將結果文件上傳到服務器,但由於服務器安全性以及是否可以自動上載而不打擾用戶,我不確定這是否是一個好選擇。

b)我可以在代碼庫屬性上使用相對路徑,但是複製後整個文件夾層次結構需要保持完整。如果我不能提出一個更好的方法來做到這一點,這可能是最後的手段。

C)更改部署方法(想避免這種替代不花更多的時間在開發階段)

任何想法?我錯過了什麼嗎?我怎麼解決這個問題? 謝謝,

回答

1

我不知道我完全理解你的使用情況,但是從我明白,我建議這樣的:

轉儲小程序應用程序中使用Java Web Start啓動。 JNLP文件爲fxml文件類型聲明文件關聯。當用戶雙擊一個fxml文件時,它將作爲參數傳遞給JWS應用程序的main(String[])

沙盒JWS應用程序可以使用JNLP API訪問本地文件系統上的資源。這是我的demo. of the JNLP API file services

+0

感謝您的建議,安德魯。如果我理解了你的建議權限,這意味着可以通過雙擊results.fxml文件觸發將作爲applet執行的代碼,從而創建圖形。但是,這將從圖中分離出HTML報告,對吧?我想知道是否應該提供關於由「主」應用程序創建的文件夾/文件層次結構的一些信息,以便更好地瞭解我想實現的目標... – posdef 2011-05-11 12:00:15

+0

@posdef:「..將會有的代碼通過雙擊results.fxml文件觸發小程序,從而創建圖形。「是&否。大多數沒有。 「雙擊打開」功能是爲應用程序設計的(使用'main(String [])'方法) - 它不適用於小程序。 「這將會從圖表中分離HTML報告,對吧?」是。但是,你能否重做Java應用程序。也顯示HTML?您可能將整個HTML和fxml封裝到一個zip歸檔文件中,給它一個自定義的擴展名,並讓用戶雙擊它。 – 2011-05-11 14:52:50

+0

嗯..我實際上是在想讓JWS做所有的報告,包括HTML報告,就像你的建議。但是這需要一些設計上的改變,我現在不太喜歡。此外,我的揮杆知識在這一點上絕對不如CSS/HTML設計。所以我擔心整個事情最終會成爲一大堆醜陋的數字:)無論如何,再次感謝您的建議,我會在未來幾天考慮它。 – posdef 2011-05-12 07:35:18