2013-05-04 1 views
0

У меня есть пакет:OSGi как установить пакет с удаленной машины?

<groupId>com.helloworld</groupId> 
<artifactId>Helloworld</artifactId> 
<version>1.0.0-SNAPSHOT</version> 

Раньше расслоение и OSGi контейнер (FUSE ESB Enterprise) находятся на одной и той же машине. Я использую следующую команду, чтобы установить его из локального репозитория Maven:

FuseESB:[email protected]> install file:/home/li/.m2/repository/com/helloworld/Helloworld/1.0.0-SNAPSHOT/Helloworld-1.0.0-SNAPSHOT.jar 

Теперь расслоение и OSGi контейнер находятся на другой машине:

расслоение в машине, где IP является 192.168.122.22

Как могу ли я установить этот пакет удаленно?

ответ

1

Обратите внимание, что аргумент команды install является URL-адресом. Таким образом, вы можете установить любой URL-адрес, для которого у вас есть обработчик URL. Например:

install http://www.example.com/helloworld-1.0.jar

+0

Я обновил свой вопрос. Возможно ли запустить пакет за пределами контейнера? –

1

Для Fuse ESB или более общих для Apache Karaf серверов на базе вы имеете pax url mvn uri prefix. Это позволяет устанавливать пакеты из mvn-репозиториев. Я предлагаю всегда использовать этот uri вместо файлового. В вашем случае команда будет:

установить МВН: com.helloworld/HelloWorld/1.0.0-SNAPSHOT

Это Ури даже немного меньше, чем один файл на основе. Большим преимуществом является то, что у вас есть полное разрешение mvn. Таким образом, этот выше URL-адрес будет работать для пакетов из вашего локального репозитория maven, а также из центра maven.

Конечно, вы, как правило, не будете разворачивать свои артефакты в центральный центр. Поэтому, если вы хотите использовать это внутри своей компании, вы должны создать хранилище maven, такое как Nexus или Archiva. Затем вы развертываете свой собственный пакет, используя mvn clean deploy в репо вашего предприятия. Конечно, это потребует, чтобы вы правильно настроили ваш pom, но вам все равно понадобится любой крупный проект.

Последний шаг, который необходимо сделать, - это настроить ваш предохранитель ESB/Karaf, чтобы также использовать репо вашего предприятия. Это делается путем добавления repo uri к файлу etc/org.ops4j.pax.url.mvn.cfg.

Конечно, это немного больше работы, чем http-url, предложенный Нилом. Преимущество заключается в том, что это очень хорошо интегрируется с вашим процессом сборки maven, и это сделает ваш пакет mvn uris независимым от местоположения вашего maven-репо. Он также позволит вам смешивать ваши собственные пакеты и пакеты с открытым исходным кодом, когда вы начнете их комбинировать с помощью функций.

+0

+1, я рекомендую этот подход, если maven используется. По-моему, «install file: //» должен быть ограничен средой разработки. – techuser

+0

@Christian Если вы установили пакет из удаленного репозитория, загрузите его в Fuse ESB, а затем установите его локально? –

+0

Не знаю, есть ли там предохранитель ESB. Я могу только объяснить, как это делает Apache Karaf. В Apache Karaf 2.x пакеты, которые вы загружаете из репо, не будут кэшироваться локально. Предстоящий Apache Karaf 3 будет использовать ваш локальный репозиторий maven как кеш. –