Включить ресурсы в bnd файл - PullRequest
1 голос
/ 29 июня 2011

Я пытаюсь создать пакет x из, скажем, из 3 зависимостей

a.jar has spring-context.xml
b.jar has spring-cotext.xml
c.jar has spring-beans.xml

Мой пакет x должен импортировать все ресурсы jar a, b, c и объединить их в xml контекста в x.jar при создании пакета. это возможно?

У меня есть проект maven a, b, c - это модули maven jar. x - это пакетный проект, который имеет зависимости a, b, c.

Может кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

То, что вы предложили (комбинируя контексты пружины из нескольких пакетов), противоречит принципам, лежащим в основе OSGi. У вас не должно быть пакетов, которые зависят от контекста других пакетов.

Вы должны обрабатывать зависимости, используя OSGi Services. Поскольку вы используете контекстные файлы Spring, я предполагаю, что вы используете Spring-DM. Вы можете зарегистрировать службу в Spring DM с помощью следующего (что обычно делается в отдельном файле osgi-context.xml, чтобы гарантировать, что база кода не зависит от OSGi в целях тестирования. В этом примере у вас будет компонент с идентификатор клиники, определенный в BContext.xml и упоминаемый как служба OSGi

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/osgi"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/osgi  
        http://www.springframework.org/schema/osgi/spring-osgi.xsd
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <service id="osgiClinic" ref="clinic" interface="org.springframework.petclinic.repository.Clinic" />

</beans:beans>

Затем в файле osgi-context.xml потребляющего пакета вы указали бы ссылку на сервис. В приведенном ниже примере теперь у вас есть компонент, называемый клиникой, который использует код из первого компонента.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/osgi"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/osgi  
        http://www.springframework.org/schema/osgi/spring-osgi.xsd
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <reference id="clinic" interface="org.springframework.petclinic.repository.Clinic"/>

</beans:beans>

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

0 голосов
/ 26 июля 2011

Я уверен, что это возможно, но вам, возможно, придется написать реальный код для объединения этих XML-файлов.Объединение a, b и c в связку x - это то, что доступный инструментарий может сделать для вас.Вы можете взглянуть на Bnd или один из инструментов, который использует Bnd под обложками (Maven Bundle Plugin и другие).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...