Проблема понимая целую веб-эко-систему OSGi

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

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

  • Платформа OSGi (например, Apache Felix, равноденствие, Knoplerfish)
  • Время выполнения OSGi (например, Spring сервер DM, бегун мира, Apache Karaf)
  • Веб-расширитель (например, веб-расширитель мира, веб-расширитель Spring)
  • Веб-контейнер (например, Tomcat Apache, причал)

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

alt text

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

Разъясните эту целую вещь для меня? Я понимаю, что все исправляет?

28
задан Glorfindel 11 July 2019 в 01:07
поделиться

2 ответа

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 EE-совместимом сервере, таком как Tomcat.

25
ответ дан 28 November 2019 в 03:47
поделиться

Jens,

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

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

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

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

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

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

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

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

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

3
ответ дан 28 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: