2012-03-21 3 views
3

Я изучал OSGI, чтобы определить его жизнеспособность для обновления существующего проекта. В настоящее время проект состоит из модулей (которые в основном представляют собой только каталоги), которые содержат XSL Transforms. Преобразования содержат зависимости от преобразований из других модулей в виде операторов xsl: import и xsl: include. Причина, по которой я рассматриваю OSGI, состоит в том, что по мере увеличения количества модулей становится все труднее отслеживать зависимости и эффективно тестировать модули.Зависимости XSLT по связям OSGI

Возможно ли использование инфраструктуры OSGI для объявления ресурсов XML/XSLT, содержащихся в пакете, и ссылки на эти ресурсы в операторах импорта XSL Transforms в отдельном комплекте.

ответ

2

Да, это работает, как указал Лукаш, вам нужно написать простой URIResolver на основе модели расширителя. Интересный подход заключается в использовании заголовков Provide-Capability и Require-Capability для моделирования зависимостей. Это позволит вам обрабатывать зависимости с хорошей диагностикой, позволяет запускать несколько версий бок о бок, и это будет работать с OBR, резольвером, который может найти недостающие части. См. http://www.osgi.org/blog/2012/03/requirements-and-capabilities.html

И это будет первый раз, когда я вижу использование факта, что XSLT является XML ... вы могли бы написать простую таблицу стилей, которая генерировала заголовки Require-Capability! :-)

+0

Это уже доступно? Я не могу найти информацию о том, когда приходит R5, или если она уже существует? –

+0

Окончательный проект R5 будет показан на OSGi DevCon BOF (EclipseCon) во вторник вечером. Во всяком случае, описанная модель уже работает с 4.3 фреймворками. –

2

Ваш вопрос кажется очень интересным. Лично я работаю над системой, имеющей два пакета. Один пакет содержит реализацию XSLT-процессора (мы используем Saxon), а второй - несколько XSLT-файлов (которые используют инструкцию xsl:import). И это работает в OSGi среде (на самом деле Fuse ESB), но нам нужно было реализовать интерфейс javax.xml.transform.URIResolver и передать его в конвертер.

Я полагаю, вам нужно будет использовать подобный подход. Надеюсь это поможет.

+0

Лукаш, это звучит неплохо. У вас есть примеры кода или ссылки на то, как это сделать? –

0

Я бы просто использовал Maven для управления зависимостями, если бы я был вами - проще настроить свои зависимости, и он отлично справляется с транзитивными зависимостями. Используйте OSGi, если вам нужно изменить XSL-модули на времени выполнения. В обоих случаях вам понадобится реализовать URIResolver, упомянутый в другом ответе.

Смежные вопросы