Approach
Возможно, начать с применением игрушек как шип, WAB (OSGi WAR) и единого пакета услуг.
Определенно используйте итеративный подход. Насколько я знаю, JBoss поддерживает смешение OSGi-сервисов и Java EE, через JBoss modules/msc, это позволит вам попробовать OSGi и постепенно мигрировать.
Я думаю, вы обнаружите, что некоторые вещи невероятно легкие, а другие очень тяжелые, поэтому выбирайте легкие битвы, пока вы знакомы. В конце вы можете придерживаться гибридного подхода.
Сложение
Что ваш инструмент для сборки? В основном, как Maven или Ant, и в этом случае посмотрите на maven-bundle-plugin или bnd соответственно. Вам необходимо убедиться, что метаданные OSGi присутствуют в каждом из ваших пакетов (Bundle-SymbolicName, Import-Package, Export-Package и т. Д.). Если вы используете Maven, см. this answer.
Может оказаться сложным делить монолитное приложение на модули, но, как правило, при переносе модуля с разумным размером у вас должны быть отдельные пакеты для API и реализации (что является хорошим дизайном в любом случае, но также имеет последствия для среды выполнения).
Interop
Вы можете приобрести OSGi услуги, пакеты доступа и т.д., используя рамочный уровень API, низкий из нагнетаемого BundleContext
, который даст вам программный крючок низкого уровня в OSGi. Это должно быть так же просто, как:
@Resource
BundleContext context;
Если ваш код Java EE не упакована в виде модулей JBoss я не думаю, что это будет легко для вас, чтобы позвонить в другую сторону (например, OSGi сервис отрываясь сервис Java EE) не прибегая к чему-то вроде JNDI.
Вы должны иметь возможность установить веб-консоль и посмотреть, какие биты Java EE зарегистрированы в OSGi, и аналогично проверить JNDI, чтобы узнать, что доступно OSGi для Java EE.
Перенастройка Услуга
В то время как OSGi много удовольствия, используя исходные результаты рамки API в совсем немного шаблонном коде, и это маловероятно, что вы будете нуждаться в силе или хотите муфту. Вы можете использовать ряд инфраструктур инъекций зависимостей поверх OSGi; (Spring-like), Peaberry (Guice) и декларативные услуги, например.
Я предвзятый, но декларативные услуги имеют сильное сходство с моделью OSGi μservice, а реализации - легкие.
CDI
Я много о пластах/CDI не знаю, но Pax CDI может помочь (хотя JBoss, возможно, уже покрыли это).
Web
Планируете ли вы иметь модульный интерфейс с горячим развертыванием различных компонентов? Если нет, то, вероятно, лучше всего упаковать UI как WAB. WAB - это тощая ВОЙНА (т. Е. Она импортирует, а не внедряет большинство зависимостей). Даже если вы после очень модульного динамического интерфейса, я определенно сделаю это для первого прохода.
JPA
Слово предупреждения - JPA реализации, как правило, не играют хорошо в OSGi среде, вы можете захотеть взглянуть на Apache Aries или Eclipse, Близнецов. Другим вариантом может быть оставить материал JPA в пространстве Java EE и получить доступ к Java EE DAOs/Repositories в качестве служб OSGi. Опять же, если вы можете столкнуться с некоторыми проблемами с загрузкой.
Возможно полезные примеры https://docs.jboss.org/author/display/JBOSGI/Provided+Examples
ОК, давайте попробуем again..my вопрос либо слишком глуп или слишком расплывчато, может быть как :) .. я дона 'т хотят иметь руководство шаг за шагом, я хотел бы знать, если некоторые из вас когда-либо пытались сделать то, что я пытаюсь сделать, или, к сожалению, я первый сумасшедший ... я нашел некоторую документацию о равноденствии Eclipse, но я до сих пор не знаю, как я должен начаться ... теоретически я должен просто отделить каждую функциональность, предоставляемую моим приложением, в службе OSGI, сохраняя реализацию и интерфейс, разделенные (?) .. и относящиеся к моим страницам xhtml, возможно, я должен рассматривать их с помощью сервлета-моста или что-то в этом роде (?) – Danilo
Но как насчет объединения и развертывания с использованием AS JBoss 7? Любой намек? Я пытаюсь сделать что-то невозможное или просто бесполезное? спасибо, ребята – Danilo