2010-04-02 2 views
27

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

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

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

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

alt text http://img253.imageshack.us/img253/1631/osgiwebenvironmentschem.png

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

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

ответ

24

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.

+4

Благодарим вас за отзыв. Если я правильно понимаю вас, веб-расширитель принимает файлы WAR, которые обычно развертываются в веб-контейнере, таком как tomcat, и заставляют их запускаться во время выполнения OSGi. OSGi HttpService затем сделает их доступными «в Интернете» через HTTP-протокол. Верный? В заключение: мне не нужен веб-контейнер, такой как Tomcat? – Jens

+2

Да, точно, как это сочетается. Вы будете доступны через службу OSGi http. Однако на практике веб-расширитель использует веб-контейнер для развертывания WAR в любом случае. Преимущество, которое вы получаете, состоит в том, что WAR можно запустить с вашими обычными сценариями запуска OSGi, и WAR могут участвовать в нормальном управлении зависимостями среды OSGi (то есть вы можете зависеть от WAR: s и WAR: s может зависеть от других пакетов OSGi). –

+1

И все сервлеты будут зарегистрированы в службе OSGi http. –

3

Jens,

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

Вместо этого следует использовать Eclipse RCP (Rich Client Platform).

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

Лаки для всех нас, вы можете получить книгу 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. Я также пишу об этом на my Java EE blog, хотя не всегда специально на OSGi.

+0

Эй, Хенди, благодарю вас за ваш ответ. Наверное, я не обычный кодер, так как я думал, что OSGi не так уж плоха. И я выполнил большинство своих учебных проектов только с помощью моего терминала/консоли и простого текстового редактора;) Мне нравится держать вещи простыми. Но вся среда Eclipse, конечно же, неплохая и для более крупных проектов. Я не знаю, почему все OSGi-кодеры настолько стыдятся простого OSGi? В моих глазах это снова показало Java. – Jens

+0

Просто хотел добавить мои 2 цента здесь. Я не согласен с советом Хенди о том, что я не смотрю и не использую простой OSGi. Существует много случаев, когда простые OSGi или некоторые другие компоненты OSGi намного лучше, чем RCP. Конечно, RCP имеет свои применения, но это не серебряная пуля. –

+1

@ Марсель благодарит вас, я, безусловно, согласен с вами в том, что «RCP имеет свое применение, но это не серебряная пуля». Что я имел в виду, так это то, что Eclipse RCP - это более простой способ начать работу (то есть ** этап обучения **) с OSGi. В течение нескольких дней программист сможет делать многое относительно просто, чем с простой OSGi, а затем «почувствовать», что такое OSGi. Пустой программист, начиная с простой OSGi, наверняка поймает слишком много ошибок в первые несколько дней и легко запутается. После того, как начальная кривая пройдена, выбор разработчика - это вариант RCP или простой OSGi для своего проекта. –

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