【问题标题】:Java programming with one base code and multiple versions一个基本代码和多个版本的 Java 编程
【发布时间】:2017-02-03 04:09:02
【问题描述】:

基本上,我有一个“基本”代码,它是程序的主体,并且希望能够根据每个“客户”的个人要求添加单独的库/模块/类。当我设置程序时,我会选择版本(base、customer1、customer2)。这是一个基于 webbed 的服务,在 tomcat7 apache 服务器 Java1.8 上运行。

有这样的可能吗?

编辑:一些自定义小到一个新字段、一个新方法或一个新类。

【问题讨论】:

  • 设置程序时,我会选择版本。您的意思是在运行时还是在部署时进行选择?
  • @CKing 部署最好,我想让它像选择一个版本一样简单。也许像安装程序?

标签: java design-patterns web-applications


【解决方案1】:

如果我错了,请纠正我,但听起来您需要一些核心代码到您的系统中,然后您可以添加功能以便为特定客户定制它。

可以通过使用 OSGI 框架(如 apache felix 或 equinox(内置于 eclipse))编写代码来实现自定义。这些框架表面上是插件框架,允许您动态添加和删除模块,但它也允许您将代码编写为可以组合到您的规范的单独包。 here 是一个很好的使用 Equinox 的教程。

关于自动执行每个客户定制的任务,可能值得您研究一下 Chef 之类的东西,它用于自动配置 apache 或 mysql 等服务器软件,它可以让您编写一个“配方” " 为每个客户的个性化定制。一旦编写了各种 OSGI 插件,您所要做的就是编写一个脚本将它们组合在一起并运行它,然后您可以将定制的软件发送给客户。

【讨论】:

  • 我不必在 Web 服务上对其进行自定义,目前我有核心代码,以及为该客户自定义的重复代码。因此,当我对核心代码进行更改时,我也必须对每个副本进行更改。当我有一对夫妇时这很好,但当我有 50 岁以上时就不行了。我希望以一种我可以拥有核心代码的方式完成它,以及像“插件”或覆盖类这样的自定义。
  • 我已经更改了我的帖子以更好地反映您的需求,我希望这会有所帮助。
  • Chef 似乎是我正在寻找的东西,但它使用的是 Ruby。我的代码是用 Java 编写的,我可以用它来“编译”我的一堆代码吗?
  • 这应该不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多