Как изолировать зависимости API от основной программы, в которой он используется? - PullRequest
1 голос
/ 21 сентября 2010

У меня есть система, для которой я создаю плагин через четко определенную точку доступа.Однако рассматриваемый плагин использует некоторый jar, который также использует фреймворк, но другой версии.

Код структурирован таким образом, что код интегрируется в фреймворк (расширяет точки расширения плагина) и код выполняетфактическая работа очень хорошо отделена (в основном сводится к API менее 10 классов).Однако за этими несколькими классами скрыта довольно большая и сложная система (60+ jar-зависимость)

Вопрос заключается в следующем:

Как я могу гарантировать, что что-либо созданное классами API выполненоиспользуя отдельную приватную библиотеку jar-файлов?

Другими словами, как изолировать плагин, чтобы он работал с собственной частной библиотекой, не мешая библиотекам основного приложения?

-- РЕДАКТИРОВАТЬ ---- Пока единственными двумя способами, которыми это может быть достигнуто, является встраивание фреймворка, такого как OSGi, или предоставление моей собственной реализации загрузчика классов.Последнее может быть сделано, и в сети предлагается много вариантов, хотя я не нашел ничего, что дало бы мне уверенность в стабильности, которая мне нужна для системы под рукой.

Что возвращает нас к OSGi, я надеялся наболее легкое решение, хотя, возможно, когда я изучу эту технологию, она сделает то, что я хочу, без особых усилий.

Ответы [ 2 ]

5 голосов
/ 21 сентября 2010

Вот для чего OSGi Equinox небольшая приятная реализация.

0 голосов
/ 21 сентября 2010

Насколько я знаю, единственный способ загрузить две версии одного и того же класса в Java - запустить два экземпляра JVM.

...