我正在開發一個相當一定範圍的Java Web應用程序。 它有許多模塊,使用許多外部庫來完成工作,並與一組獨立的批處理應用程序(cron作業)密切合作,這些應用程序生成PDF,發票,批處理日誌文件,定期向所有合作伙伴FTP上傳文件那種東西。在webapp和批處理應用程序之間共享代碼庫的好方法是什麼?
我的代碼庫中劃分
- 網/批層
- 業務層
- 通用模型層
- DAO層
第一層包含兩個包.web
和.batch
。第一個包含所有與servlet相關的東西,後者包含所有批處理程序和main(String[] args)
方法。兩全其美使用公共和業務層做他們的工作,甚至常常同樣的方法(如loadUser()
,storeUser()
等)
現在我有一個寬泛的問題:
什麼是合適的部署策略爲了這?
鑑於我想將我的webapp部署爲.war歸檔文件,並且批處理程序應該可以從UNIX cron
進行調用。
和一個非常特殊的一個:
我怎麼會去加載資源從業務層?
在考慮web應用程序,我會保存配置文件,就像一個Apache FOP配置文件和.xsl
轉換文件生成發票PDF等的WEB-INF
目錄中,可能是一些子目錄,或在.war
文件META-INF
?
但是,在需要這些東西的業務層(例如服務方法generateInvoicePDF(transaction)
)中,我無法使用servletContext來獲取資源。而在批處理程序中,甚至沒有一個servletContext和一個WEB-INF
目錄!
你們是怎麼做到的?你真的只需要資源在網頁層?或者你會將所有這些文件放入類路徑根目錄並使用ClassLoader.getResource()
?我最終會在那裏提供一些相關的文件。不喜歡那樣。或者只將類路徑根目錄中的文件和.xsl
配置到文件系統中的某個外部硬編碼文件夾(不是非常便攜)?
其他項目的指導和經驗將不勝感激。
感謝羅布,是有道理的。事實上,我在Eclipse中的項目結構甚至不允許我從業務層接觸到Web類(單向項目依賴項)。我會考慮將所有內容放在classpath根目錄下。 – marc82ch 2015-02-09 09:19:17