gpt4 book ai didi

java - 在 Web 应用程序和批处理应用程序之间共享代码库的好方法是什么?

转载 作者:行者123 更新时间:2023-12-01 11:57:06 25 4
gpt4 key购买 nike

我正在开发一个相当大范围的 Java Web 应用程序。它有许多模块,使用许多外部库来完成任务,并与一组独立的批处理应用程序(cron 作业)紧密配合,这些应用程序生成 PDF、发票、批处理日志文件、定期通过 FTP 上传到合作伙伴等等。之类的东西。

我的代码库分为

  • Web/批处理层
  • 业务层
  • 通用模型层
  • DAO 层

第一层包含两个包.web.batch 。第一个包含所有与 servlet 相关的内容,后者包含 main(String[] args) 的所有批处理程序。方法。两个世界都使用公共(public)层和业务层来完成其工作,甚至通常使用相同的方法(例如 loadUser()storeUser() 等)

现在我有一个广泛的问题:

对此合适的部署策略是什么?

假设我想将我的 web 应用程序部署为 .war 存档,并且批处理程序应该可以从 UNIX cron 调用.

还有一个非常具体的:

我如何从业务层加载资源?

在考虑 Web 应用程序时,我会存储配置文件,例如 Apache FOP 配置文件和 .xsl WEB-INF 内用于生成发票 PDF 等的转换文件目录,可能是某个子目录,或者在 .war 中文件META-INF

但是,在业务层中,需要这些东西(例如服务方法 generateInvoicePDF(transaction) ),我无法使用 servletContext 来获取资源。在批处理程序中,甚至没有 servletContext 和 WEB-INF目录!

你们是怎么做到的?您真的只需要 Web 层的资源吗?或者您会将所有这些文件放入类路径根目录并使用 ClassLoader.getResource() ?我最终会在那里得到一些各种各样的文件。不喜欢那样。或者仅类路径根目录和 .xsl 中的配置文件进入文件系统中的某个外部硬编码文件夹(不太便携)?

任何来自其他项目的指导和经验将不胜感激。

最佳答案

如果您有业务层需要的资源,请将它们放入业务层 jar 中。

不要访问您的 Web 层(通过 ServletContext)来检索内层中的内容。

参见:How to package resources, that are accessed directly , into a jar file

关于java - 在 Web 应用程序和批处理应用程序之间共享代码库的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com