запуск нескольких банок из нескольких версий, но с одинаковыми именами и именами классов - PullRequest
0 голосов
/ 02 мая 2018

У меня 5 общих библиотек на сервере приложений Websphere.

Каждый из них указывает на разные банки с одинаковыми именами (например, projectA.jar).

Все jar-файлы содержат одинаковые имена классов (одно и то же дерево), НО, код классов не идентичен между jar-файлами, поскольку каждый из них является новой версией предшественника.

Я делаю это, потому что у меня есть 5 приложений на сервере приложений, и каждому приложению нужна другая версия projectA.jar.

Можно ли размещать одинаковые jar на одном сервере приложений с одинаковыми классами, но не с одним и тем же кодом внутри?

1 Ответ

0 голосов
/ 02 мая 2018

Это нормально, если вы поддерживаете разделение между библиотеками и приложениями, и между ними нет прямой связи. Если вы связываете каждую разделяемую библиотеку только с тем приложением, которому это необходимо, библиотеки будут добавлены в загрузчики классов приложений, которые не должны иметь никакой видимости друг для друга, если вы не выполняете какие-то очень необычные операции. Каждое приложение будет загружать свою собственную копию необходимого класса (классов) из своей собственной копии projectA.jar. Если у вас есть что-то, что делает вызовы между приложениями, это повышает риск ClassCastExceptions и Verify или LinkageErrors, но если это только пять полностью отдельных приложений, у вас все будет в порядке.

Я хотел бы отметить, что если вы не поддерживаете разделение должным образом (например, вы объединяете библиотеки или связываете несколько приложений с приложением или связываете их все с загрузчиком классов совместно используемой библиотеки на уровне сервера), то вы может быть в беде. Java может обрабатывать несколько классов под одним и тем же именем, но не внутри одного загрузчика классов - фактически невозможно использовать один и тот же класс из 1 / projectA.jar и 2 / projectA.jar, если они есть в одном приложении. загрузчик классов или общая библиотека. Поскольку у вас есть четкое представление о ваших зависимостях для каждого приложения, надеюсь, это не является для вас высоким риском.

...