Как использовать разные версии класса в одном приложении? - PullRequest
0 голосов
/ 10 августа 2011

В настоящее время я работаю над приложением Java, которое должно иметь возможность использовать разные версии класса одновременно (из-за поддержки нескольких арендаторов). Мне было интересно, есть ли хороший подход для управления этим? Мой основной подход заключается в том, чтобы иметь интерфейс, скажем Car, и реализовывать различные версии, такие как CarV1, CarV2 и так далее. Каждая версия получает свой класс.

Я думаю, что мой подход немного искажен. Но я не нашел никакой литературы по этой теме, но на самом деле я не знаю, что мне нужно искать.

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Идея интерфейса разумна. Объедините его с фабрикой, которая может создать требуемый экземпляр реализации в зависимости от некоторого внешнего ввода, например. г. идентификатор арендатора. Если вам не нужно поддерживать несколько арендаторов в одном и том же запущенном экземпляре приложения, вы также можете использовать что-то вроде ServiceLocator из JDK, что позволяет использовать подход конфигурации на основе файлов.

Если вы работаете на сервере приложений, попробуйте запустить несколько экземпляров, каждый из которых настроен для отдельного клиента. Сервер тогда позаботится о разделении экземпляров, просто отлично.

В противном случае, если вы действительно думаете, что вам нужно одновременно использовать несколько реализаций (во время выполнения) в приложении EE, отличном от Java, это сложная проблема. Возможно, вы захотите взглянуть на контейнеры OSGi, которые предоставляют функции для нескольких версий класса. Однако такой подход добавляет значительную сложность, если вы еще не знакомы с ним.

0 голосов
/ 10 августа 2011

Теоретически вы можете справиться с этим, используя несколько загрузчиков классов, как, например, JBoss.

НО: Я бы настоятельно рекомендовал не реализовывать это самостоятельно.Это довольно сложный вопрос, и его легко ошибиться.Если вы говорите о веб-приложении, вы можете вместо этого создать один экземпляр веб-приложения для каждого клиента.Если вы работаете с автономным приложением, вам следует проверить, возможно ли запустить по одному экземпляру для каждого арендатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...