如何在同一个应用程序中使用不同版本的类?

时间:2011-08-10 08:50:13

标签: java multi-tenant

我目前正在开发一个Java应用程序,它应该能够同时使用不同版本的类(由于多租户支持)。我在想,管理这个有什么好方法吗?我的基本方法是有一个接口,比如Car,并实现不同的版本CarV1,CarV2等。每个版本都有自己的类。

我认为,我的做法有点像。但我没有找到任何关于这个主题的文献,但实际上我不知道应该搜索什么。

2 个答案:

答案 0 :(得分:2)

界面理念是谨慎的。将它与可以根据一些外部输入生成所需实现实例的工厂相结合,例如: G。承租人。如果您不需要在同一个应用程序运行实例中支持多个租户,您也可以使用JDK中的ServiceLocator,它允许使用基于文件的配置方法。

如果您在应用程序服务器中运行,请考虑启动多个实例,每个实例都配置为不同的客户端。然后服务器将处理实例分离,就好了。

否则,如果您真的认为在非Java EE应用程序中需要同时(在运行时)多个实现,这是一个棘手的问题。也许您想要考虑一下OSGi容器,它提供了具有多个版本的类的功能。但是,如果你还不熟悉它,这样的方法会增加很大的复杂性。

答案 1 :(得分:0)

理论上你可以使用像JBoss这样的多个类加载器来处理这个问题。

但是我强烈建议不要自己实施。这是一个相当复杂的问题,容易出错。如果您正在谈论Web应用程序,则可以为每个租户创建一个Web应用程序实例。如果您正在使用独立应用程序,则应检查每个租户是否可以运行一个实例。