Как заставить (до 1.2.0) OSGi XMLNS для OSGi R7 Метатип аннотации
Я обновляю проект до аннотаций OSGi R6 (у меня есть ограничения на запуск OSGi R7 из-за моих зависимостей, развернутых в моем контейнере), и я столкнулся с проблемой, когда в моей старой аннотации Apache Felix SCR были тире, что невозможно с OSGi R6.
Я пытаюсь сохранить свои существующие свойства OSGi как есть (содержащие тире) при переходе к аннотациям OSGi R6, однако это оказывается трудным.
Теперь я пытаюсь использовать аннотации OSGi R7, которые поддерживают тире через $_$
и ищет какой-то способ заставить /target/classes/OSGI-INF/metatype
XML-файлы, чтобы иметь
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.2.0"...
вместо
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.4.0"...
... что является несовместимостью в моем приложении (пространство имен 1.4.0 не может быть разрешено, и нет, я не могу обновить службу Metatype).
Есть ли способ заставить XMLNS генерировать метатип XML? Я могу принудительно установить его в файлах XML-компонентов в /target/classes/OSGI-INF, указав @Component(xmlns="http://www.osgi.org/xmlns/metatype/v1.2.0")
однако это установило это для Компонента а не Метатипа (и мне это нужно для метатипа).
Я использую:
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>4.1.0</version>
Есть мысли о том, как мне этого добиться?
1 ответ
Единственный раз, когда Bnd создаст пространство имен Metatype 1.4, это если вы используете PREFIX_
константы для префикса имен элементов, если вы используете одну аннотацию элемента, где имя происходит от типа, а не элемента, или если вы используете отображение имен $_$
в -
, Поскольку вы хотите использовать этот последний элемент, то xml должен использовать пространство имен 1.4, поскольку все процессоры xml должны понимать новые правила сопоставления имен. Если бы вы могли принудительно установить версию пространства имен на более низкую версию, тогда старый процессор не распознавал бы новые функции, используемые в документе XML, и неправильно обрабатывал их.
Поэтому, если вы хотите использовать функции Metatype 1.4, которые требуют понимания этих функций во время выполнения, вы должны использовать компонент среды выполнения, который понимает эти функции Metatype 1.4.