Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用一个基本代码和多个版本的Java编程_Java_Design Patterns_Web Applications - Fatal编程技术网

使用一个基本代码和多个版本的Java编程

使用一个基本代码和多个版本的Java编程,java,design-patterns,web-applications,Java,Design Patterns,Web Applications,基本上,我有一个“基本”代码,它是程序的主体,我希望能够根据每个“客户”的单独需求添加单独的库/模块/类。当我设置程序时,我将选择版本(base、customer1、customer2)。这是一个基于Web的服务,运行在tomcat7 apache服务器Java1.8上 有这样的可能吗 编辑:某些自定义设置与新字段、新方法或新类一样小 如果我错了,请纠正我的错误,但听起来您希望在系统中添加一些核心代码,然后可以添加功能,以便为特定客户定制 定制可以通过使用OSGI框架(如ApacheFelix或

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

有这样的可能吗


编辑:某些自定义设置与新字段、新方法或新类一样小

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

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


关于每个客户定制任务的自动化,您可以研究一下apache或mysql等服务器软件的自动配置,它将允许您为每个客户的个性化定制编写“配方”。一旦各种OSGI插件编写完成,您所要做的就是编写一个脚本,将它们放在一起并运行,然后您可以将定制的软件发送给客户。

我不必在Web服务上对其进行定制,目前我有核心代码,以及为该客户定制的重复代码。因此,当我对核心代码进行更改时,我还必须对每个副本进行更改。当我有一对夫妇的时候这很好,但当我有50+的时候就不行了。我希望通过一种方式来完成它,我只需要核心代码和定制,比如“插件”或重写类。我已经更改了我的帖子,以更好地反映您的需求,我希望这会有所帮助。Chef似乎是我在寻找的东西,但它使用的是Ruby。我的代码是用Java编写的,我能用它来“编译”我的代码吗?这不应该是个问题。当我设置程序时,我会选择版本。您的意思是在运行时还是在部署时进行此选择?@CKing部署将是最好的,我希望使其简单到只选择一个版本。也许像一个安装程序?