2012-03-30 120 views
0

我有一個使用額外資源文件(位於名爲「templates」的目錄中的文本模板文件)的EJB。我不知道如何從Java EE應用程序訪問「模板」目錄的內容。如何訪問部署到weblogic的其他文件

我試着將目錄作爲EAR項目中的「EarContent/templates」或「EarContent/APP-INF/lib/templates」文件夾。按預期將該目錄部署到weblogic域中。 (我在weblogic域的文件結構中搜索它)。 但是,當我想要訪問這些文件時,所有資源路徑似乎都是相對於weblogic域根目錄而言的,而不是相對於已部署的應用程序。因此

URL dirURL = this.getClass().getClassLoader().getResource("templates"); 

返回 「文件:/ <domain_root> /模板」,

File file = new File("templates"); 

將打開 「<domain_root> /模板」 文件(如果有的話)。

如何正確訪問其他資源文件?

編輯:我發現當我把「模板」目錄作爲「EarContent/APP-INF/classes/templates」放到EAR項目中時,上面提到的代碼片段都找到了它。但是「classes」目錄不適合將「templates」目錄放入...(至少因爲IDE在此目錄中過濾非.class文件並且不顯示它)。

編輯:我一直在玩它一點。使用FileMon,我發現weblogic完全忽略了MANIFEST.MF類路徑中指定的目錄。我已經嘗試了EJB和EAR清單,並且weblogic甚至不嘗試查看清單中指定的路徑。

Manifest-Version: 1.0 
Class-Path: APP-INF/ 
+0

把它放在耳朵裏所包含的戰爭的根源環境中怎麼樣? – BigMike 2012-03-30 14:14:09

+0

我編輯了我的問題。 我不需要從Web訪問文件夾,而是從EJB訪問文件夾。 – xarx 2012-03-30 14:40:13

回答

0

我已經通過谷歌搜索和試驗花了很多時間,但我發現沒有其他的辦法,而不是目錄放入<EarProject>/EarContent/APP-INF/classes目錄/文件夾。即使在weblogic文檔中(隱約地)建議使用另一種解決方案,例如將類路徑設置爲MANIFEST.MF文件,也​​無效。

我也測試過將模板目錄放入單獨的實用程序項目中的可能性。模板目錄必須放置在<實用程序項目>/src /文件夾中。但是,在開發環境中,模板目錄部署爲常規目錄,而在導出到EAR時,模板目錄將打包到實用程序項目.jar中。在部署到Weblogic服務器上時,這個.jar文件沒有解壓,因此無法將模板文件作爲常規文件訪問,特別是無法枚舉它們。

+0

P.S.置於/EarContent/APP-INF/classes /中的模板目錄在IDE中可見。您無法從其他位置將其拖放到WLW IDE中。你必須在文件管理器中移動它。 – xarx 2012-04-03 08:02:46