2014-09-25 118 views
2

我想直接在文件系統上管理一堆報告文件,以便於使用,特別是在更新或更新版本時更是如此。並避免這個不透明的文檔庫。如何直接從Liferay中的磁盤讀取文件?

現在我想直接在liferay中讀取其中一個文件,將它們傳遞給JasperReports(例如作爲ByteStream)。我沒有找到任何辦法來做到這一點或任何方式來處理文件。

這是如何實現的? 還是我完全搞砸了我的想法?

+3

處理Liferay中的文件與處理任何其他Java應用程序中的文件沒有區別。 – 2014-09-25 11:15:03

+0

Liferay是一個Portlet容器,與「任何其他Java應用程序」有很大不同。不要嘗試直接使用java.io包。 – 2014-09-25 14:14:34

回答

0

您基本上可以利用Spring框架的強大功能,因爲Liferay直接或多或少地使用了Spring。

您需要使用某種「資源適配器」才能打開文件,您可以通過多種方式進行操作。它很大程度上取決於你放置文件的位置以及它們如何到達那裏(如果從外部提供或由Liferay portlet本身生成,或作爲已部署的資源提供)。

我可以推薦搜索以下Spring類中使用:

org.springframework.core.io.FileSystemResource 

不過你應該考慮在數據庫中存儲這些文件,因爲這畢竟是更安全(交易安全,保障,。 ..)。

+0

爲什麼使用Spring而不是直接使用file.io更好? – Benjamin 2014-09-26 09:03:50

+0

Spring方式使用了企業應用程序已知的「資源適配器」概念的等價物。因此,它在訪問非事務輸入/輸出時支持事務處理等。如果您直接使用file.io,則無法保證文件句柄和文件讀取/寫入操作正確。考慮事務回滾,系統異常和其他對企業應用程序非常重要的事情。 Liferay確實在99%的實施中正確使用這些API。 – 2014-09-29 07:13:57