2012-06-14 58 views
1

我正在研究GWT應用程序,我從Web服務中檢索文件,然後通過RPC返回URL以顯示UI。正在創建/保存在一個文件夾,名爲documentFiles文件:如何將文件保存在glassfish上的應用程序目錄中?

File newFile = new File("documentFiles", doc.getFilename()); 
newFile.getParentFile().mkdirs(); 

當我在GWT開發模式在本地運行的應用程序,創建該文件夾,我預計,在戰爭中的目錄,這樣我就可以在訪問host:8080/[base url]/documentFiles

但是,當我在玻璃魚上運行它(在Windows上)時,該文件夾正在...\glassfish\domains\domain1\config\documentFiles下創建。

我會想到它是在...\glassfish\domains\domain1\applications\[app name]\documentFiles

我希望這是有道理的。我如何指定在應用程序文件夾下創建文件?感謝任何幫助。謝謝。

+2

我傾向於建議不要將文件寫入應用程序目錄(並且如果您正在部署爲戰爭,則*無法*)。而是保持在一個可配置的位置並將它們回傳。 –

+0

謝謝!根本不知道我根本無法做到,而且我找到了另一種解決方案。 –

回答

1

通過直接文件IO從Web應用程序訪問文件通常是一個糟糕的主意和糟糕的設計。你如何確保只有一個正在運行的實例正在訪問該文件?考慮一下數百個併發用戶使用的應用程序,可能運行在多個Glassfish實例上。如何處理交易?等等

如果您必須訪問文件,您應該使用專門爲此編寫的資源適配器以「標準」方式執行此操作。上次我檢查(〜2年前)時,有一個用於測試狀態的Glassfish的文件資源適配器 - 它可用,但不是很可靠。我記得我們在交易處理部分遇到了一些問題。這可能是一個更好的形狀由現在...

你或許應該是忘記了文件IO,以及解決其他方法的問題更好(例如,通過數據庫或JMS通信)。由於傳統的API,我們被迫使用文件,如果你沒有這樣的限制,那麼不要這樣做。

+0

謝謝!我結束了使用這裏建議的答案:http://stackoverflow.com/questions/9150218/gwt-get-url-of-file-located-on-server –

相關問題