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

Проблемы с пониманием всей экосистемы OSGi

Я новичок во всем мире Java и OSGi, и у меня проблемы с пониманием экосистемы веб-приложений OSGi.

Чтобы быть более точным, я сейчас пытаюсь понять, как все части экосистемы связаны друг с другом:

  • OSGi Framework (например, Apache Felix, Equinox, Knoplerfish)
  • OSGi Runtime (например, Spring DM Server, Pax Runner, Apache Karaf)
  • Web Extender (например, Pax Web Extender, Spring Web Extender)
  • Веб-контейнер (например, Apache Tomcat, Jetty)

Чтобы дать вам наглядное представление о моем реальном понимании их отношений, посмотрите на это изображение:

alt text

Насколько я знаю, OSGi Framework является реализацией спецификации OSGi. Среда выполнения - это дистрибутив, который добавляет дополнительные функции поверх спецификации OSGi, например, ведение журнала. Поскольку в механизме classpath OSGi и таких веб-контейнеров, как Tomcat, есть некоторые различия, вам нужен какой-то переводчик. Эта часть обрабатывается "Web Extender".

Не могли бы вы уточнить все это для меня? Я все правильно понимаю?

4b9b3361

Ответ 1

OSGi является стандартом API и упаковки для взаимодействующих программных модулей. Это похоже на другие стандарты API, такие как JPA или Java EE.

OSGi runtime - это сервер, который следует стандарту OSGi, это реализация стандарта. Вы упомянули некоторые общие: Knopflerfish, Eqinox. Они позволяют запускать пакеты OSGi.

Веб-контейнер обычно относится к реализации веб-частей Java EE (сервлетов). Стандарт сервлета также определяет API и упаковку, как и OSGi, только разные.

Вам нужен сервер для запуска веб-приложений Java EE. Вы упаковываете свое приложение в виде веб-архива Java (WAR) и запрашиваете сервер приложений для его запуска. Как вы помните, есть несколько серверов, таких как Tomcat, Jetty, а также более крупные серверы, которые охватывают более крупные части стандарта Java EE, такие как Glassfish и JBoss.

Веб-расширитель пытается объединить стандарт сервлета с OSGi. Добавив некоторые данные, относящиеся к OSGi, к вашей уже упакованной WAR, WAR автоматически анализируется и запускается во время выполнения OSGi. Сервера вашей WAR будут опубликованы в службе OSGi http веб-расширителем. С помощью веб-расширителя вы можете запускать как стандартные приложения OSGi, так и WAR, используя только среду выполнения OSGi, без необходимости использования Java EE-совместимого сервера, такого как Tomcat.

Ответ 2

Jens,

Поскольку у меня есть некоторый опыт работы с OSGi, я действительно не предлагаю вам начать с простой OSGi.

Начните с Eclipse RCP (Rich Client Platform) вместо этого.

Вы не только получаете рабочую среду OSGi, но и полнофункциональную интегрированную среду разработки, если вы загружаете Eclipse IDE для RCP и RAP Developers edition здесь.

К счастью для нас всех, вы можете получить книгу Eclipse Rich Client Platform (2nd Edition), которая была недавно выпущена всего несколько месяцев назад и содержит обновленную информацию/руководство по Eclipse RCP.

OSGi является основным строительным блоком Eclipse RCP, однако OSGi сам по себе является запутанным и скучным (по крайней мере для стартеров). Достижение скорости на Eclipse RCP намного проще и приятнее, вы можете создать функциональное приложение "делать что-то" в течение нескольких часов.

С простой OSGi вам уже повезет, если вы сможете избавиться от исключений ClassNotFound в течение первых нескольких дней.

Через некоторое время с помощью Eclipse RCP "конвертируйте" ваше приложение в Eclipse RAP, чтобы запустить его как веб-приложение в контейнере сервлетов Java, Посмотрите, нравится ли вам это, даже если вы этого не сделаете... к тому времени вы уже поняли бы концепции и практики OSGi, что ваше плавание к "простой OSGi" было бы более гладким, чем если бы вы начали с нуля.

Удачи, Дженс!

P.S. Я также пишу об этом на в моем блоге Java EE, хотя не всегда специально для OSGi.