2013-09-16 5 views
10

Мне было интересно, можно ли встраивать контейнер OSGi, например, Karaf внутри экземпляра Tomcat. Согласно this SO question и нескольким другим, кажется, что его возможно, но я не могу найти каких-либо твердых подробностей о том, как это сделать или о каких подводных камнях/остерегается.Tomcat и OSGi

Итак:

  1. Можно ли встроить OSGi контейнер внутри Tomcat, так что я могу горячее развертывание OSGi расслоений в любой точке в этот контейнер без необходимости перезагрузки Tomcat?
  2. Если ответ на № 1 выше «да», то какие системные службы/порты внедряют OSGi внутри Tomcat? Я спрашиваю, потому что я хотел бы развернуть OSGi на сервере Tomcat, размещенном на Java PaaS, где у меня нет прав администратора. И мне интересно, если, когда я попытаюсь развернуть встроенный контейнер OSGi в Tomcat, он попытается начать прослушивание портов или, возможно, начнет делать что-то в локальной файловой системе. Если это так, я, скорее всего, получу ошибки безопасности/разрешения.

Заранее благодарен!

+2

http://angelozerr.wordpress.com/category/java/osgi/equinox/equinox-servletbridge/ довольно подробно объясняет, как это сделать. –

+0

Thanks @ M.Deinum (+1) - интересно, что в статье упоминается, что они не могли этого сделать, потому что пытались развернуть CloudBees, который является «не-OSGi HTTP Tomcat». ** Я также пытаюсь развернуть на CloudBees! (Java PaaS, о котором я упоминал). ** Знаете ли вы, как Tomcat может включать/отключать OSGi? Еще раз спасибо! –

+0

Не знаете, где они упоминают об этом. Но вы не можете развернуть tomcat как пакет OSGI, но наоборот (OSGi внутри tomcat) должен работать. Недостатком является то, что мост сервлетов довольно устарел (Servlet 2.4). –

ответ

0

Мы развертываем наше приложение таким же образом. Мы развернули karaf в tomcat & на weblogic с помощью сервлета. Причиной использования контейнера было преодоление ограничений среды, когда некоторые клиенты являются «oracle» или «ibm» и хотят, чтобы все развертывания выполнялись на этих серверах.

Поскольку вы используете сервлет-мост, ему не нужно открывать новый порт для пересылки в http-трафик. У вас могут быть проблемы с консолью karaf, если этот порт заблокирован. Также я помню, что проблемы с запуском cxf из-за встроенного экземпляра причала, который он запускает на другом порту.

Помимо портов вам понадобится домашний каталог karaf с доступом для записи.

3

Возможно ли внедрить контейнер OSGi внутри Tomcat?

Да. На самом деле, если вы загружаете Karaf и смотрите в <KARAF_HOME>/demos/web, вы найдете demo project, который делает именно это.

Какие системные службы/порты внедряют OSGi внутри Tomcat?

Это будет зависеть от того, что вы устанавливаете в нем и как его настроить. Here is несколько старых (но IMHO стиль подходит) обсуждение портов по умолчанию и как их настроить.

+1

Забавно, как этот 3-летний вопрос только что появился в новостной ленте RSS и обманул меня. Ну, я думаю, так как я написал ответ, я просто оставлю его здесь для дальнейшего использования. –

+0

после прочтения https://web.liferay.com/it/web/milen.dyankov/blog/-/blogs/liferay-karaf-compatibility-layer сегодня, я нашел и этот пост .. комплименты @milen –

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