Подтвердить что ты не робот

Платформы OSGi для предприятий: сравнение зрелости Apache Aries vs. Eclipse Gemini

Вопрос: На сегодняшний день какая из двух инфраструктур OSGi Enterprise более зрелая: Apache Aries или Eclipse Gemini?

Я провел некоторое фундаментальное исследование возможностей OSGi для Овна и Близнецов. Я также рассмотрел аналогичный вопрос: Близнец и контейнер Apache Aries.

Мои требования и выводы ниже. Будем очень благодарны за ваши дополнительные материалы.

  • Контейнер Blueprint: как Овны, так и Близнецы кажутся одинаково зрелыми в плане реализации против спецификации Blueprint.

  • Веб-разработка (будет развиваться против JSR 286 с помощью Spring Portlet MVC):
    Хотя Gemini Web имеет корни в Spring DM (отсюда и мое первоначальное предпочтение в отношении Gemini framework), я считаю, что Овен должен быть в равной степени способен работать с веб-приложениями Spring на основе портлетов MVC.

  • JPA: Это моя самая большая проблема. Хотя я изначально был более склонен к Близнецам (из-за его корней в Spring DM и поддержки активного сообщества SpringSource), я чувствую, что зрелость Gemini JPA довольно НИЗКАЯ по сравнению с Овном JPA. Причины:

    • Gemini JPA поддерживает только интеграцию с EclipseLink в качестве поставщика JPA. Я хотел бы использовать Hibernate. Овен JPA поддерживает Hibernate.
    • Ссылаясь на Ограничения JPY Близнецы: особенно ограничение №5: Отсутствие поддержки транзакций JTA. Кажется, что Овен JPA поддерживает JTA... Но мне не удалось получить подробные сведения об уровне поддержки.
  • JNDI: моим новым веб-приложениям необходимо будет вызывать существующие EJB сеанса из уровня обслуживания, размещенного внутри сервера приложений JBoss. Следовательно, поддержка JNDI имеет решающее значение для моих веб-приложений с поддержкой OSGi в клиентском уровне.
    Кажется, что Gemini Naming еще не выпущено, тогда как у Овна уже получили некоторые возможности в этой области.

4b9b3361

Ответ 1

тот же вопрос пришел мне на ум, и я получил следующие результаты:

1: Близнецы основаны на Spring, который имеет гораздо более длительное прошлое и доказал многое. Когда я просмотрел код, Gemini казался немного более чистым с возможностями расширения, но у меня была проблема с обработчиками пространства имен. Даже с версией 1.0.0 он не дождался обработчиков пространства имен. Овен ждет NS-обработчиков так же, как ожидает ожидаемых ссылок. Я спросил парней OSGi, и они сказали, что следующая спецификация Blueprint может содержать стандартный API-интерфейс NS-обработчика, который, на мой взгляд, очень помог бы. Я пришел к выводу, что я использую Apache Aries, но это не окончательное решение. Я рассматриваю эту тему каждый квартал года. Я также сделал несколько советов по улучшению Blueprint и загрузил его в OSGi bugzilla. Я хотел бы реализовать эти улучшения летом, и, изучив код, было бы намного проще на основе Gemini.

2: Близнецы содержат встроенный Tomcat. Если вы просто бросаете пучки в равноденствие, это работает очень хорошо. Однако он содержит несколько зависимостей от Spring, которые я хотел избежать. Мне нравится Spring, но я хотел как можно меньше зависимостей. Я не думаю, что у Овна есть какая-то серьезная поддержка в этой теме. Наконец, я начал использовать Jetty, который работает с Myface и Jersey до сих пор. До сих пор я еще ничего не пробовал. Также мне понравились возможности настройки Jetty больше. Пакет конфигурации можно определить как переменную среды, которая может очень помочь, если вы хотите запустить интеграционные тесты как часть жизненного цикла сборки. Если Gemini поддерживает дополнительные параметры конфигурации (например, исходящие из пакета), я подумаю о переходе к этому.

3: Как мне нравится использовать JTA, мне не было возможности использовать Gemini вообще. Я использовал Aries JPA для тишины, и я был доволен этим. Поскольку я работаю со многими коллегами, я отвечаю за их эффективность. С Aries JPA у меня возникла проблема, что он не дождался служб DataSourceFactory (если установлено соединение db в файле persistence.xml) или данных DataSource (если источник данных jta-data или источник не-jta-data-source). Это означало, что порядок запуска пучка имеет значение, когда вы используете Aries JPA.

Это не проблема, пока мы не использовали Glassfish и JNDI, поскольку Glassfish запустила ресурсы JNDI до наших пакетов OSGI. Когда мы перешли на очистку контейнера OSGI, у нас начались проблемы, и мои коллеги начали тратить много времени, пытаясь получить нужный порядок начала пучка.

В конце я просто связал Овен JPA в комплекте и переписал части, которые мне не нравились. Это означает, что я сохранил только парсерную часть persistence.xml и создал собственный проект в http://everit.org/osgi/jpa/org.everit.osgi.jpa.container/index.html, где я сконцентрировался не на этих проблемах. В настоящее время он работает с Hibernate, и я думаю (не пробовал) с Eclipselink и скомпилированным временем OpenJPA. Контейнер, написанный мной, хорошо работает с org.apache.aries.jpa.container.context и обработчиками пространства имен aries jpa blueprint.

4: Если вы используете сервер приложений, и вы уверены, что ваша среда JNDI запускается перед вашими пакетами, а не использует ее. Однако вы не можете поймать модификацию или удалить ресурс JNDI, поэтому я не предлагаю использовать его внутри OSGi. Если вам это нужно из-за JPA, я могу предложить свою реализацию контейнера:), которая использует стандартные треки для служб OSGi, даже если вы используете * -data-source в своем persistence.xml с выражением osgi: service/.... Если вам требуется центральное место конфигурации, я рекомендую вам проверить вкладку "Конфигурация" в консоли felix-webconsole, в разделе "Спецификация метаданных и конфигурации администратора" спецификации OSGi. Если вы определите настройку конфигурации с помощью Metatypes, они будут доступны на веб-панели feilix-webconsole и через API-интерфейс Configuration Manager вы сможете поймать события изменения конфигурации. Я тестировал, и felix-webconsole работала для меня на паре Equinox-Jetty.

Надеюсь, мой вклад был полезен!