выбрать другую банку во время выполнения - переключение - PullRequest
0 голосов
/ 28 марта 2011

Мне было интересно, есть ли способ выбрать разные версии одной и той же банки во время выполнения.Я надеюсь избежать использования профилей Maven, так как это будет выбор во время сборки.

Допустим, есть две версии одной и той же банки:

greatFeature_version_A.jar greatFeature_version_B.jar

Моя первоначальная идея состояла в том, чтобы использовать JMX для создания основного переключателя времени выполнения, выбирающего между этими двумя jar-файлами, которые оба включены в classpath.Кроме того, содержимое двух jar-файлов одинаково (нет версий или разных имен внутренних классов).

Итак, когда запрашивается класс, скажем, из version_A, загрузчик классов всегда выбирает первыйон находит, независимо от того, к какой банке он принадлежит.

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

Большое спасибо!

PS Другие связанные вопросы по SO указывают на загрузчики пользовательских классов, такие как this one.

1 Ответ

0 голосов
/ 28 марта 2011

Вы можете использовать jarjar для "переименования" пакетов, чтобы пакеты greatFeature_version_A.jar запускали ajar. * И другие запускали bjar. * Таким образом, вы можете использовать код из обоих jar-файлов в одном приложении, возможно, одновременно

...