Проблемы с пониманием всей экосистемы OSGi Web - PullRequest
28 голосов
/ 02 апреля 2010

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

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

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

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

альтернативный текст http://img253.imageshack.us/img253/1631/osgiwebenvironmentschem.png

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

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

Ответы [ 2 ]

25 голосов
/ 02 апреля 2010

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

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

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

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

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

3 голосов
/ 17 июля 2010

Jens,

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

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

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

К счастью для всех нас, вы можете получить книгу 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.

...