У меня есть конечные точки REST, опубликованные в контейнере OSGi (Karaf) с использованием аннотаций javax.ws.rs
. HttpService создается pax-web, а сервисы jax-rs публикуются com.eclipsesource.jaxrs/publisher
.
Для использования этого издателя была подделана довольно чудовищная фича (скопирована откуда-то из интернета):
<feature name="jersey-karaf-feature" description="Jersey karaf feature" version="2.2.0">
<feature prerequisite="false" dependency="true">http</feature>
<bundle start-level="36">mvn:org.glassfish.jersey.containers/jersey-container-servlet/2.22.2</bundle>
<bundle start-level="36">mvn:org.glassfish.jersey.media/jersey-media-sse/2.22.2</bundle>
<bundle start-level="36">mvn:org.glassfish.jersey.media/jersey-media-multipart/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.containers/jersey-container-servlet-core/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.core/jersey-common/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.bundles.repackaged/jersey-guava/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.core/jersey-server/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.core/jersey-client/2.22.2</bundle>
<bundle start-level="36" dependency="true">mvn:org.glassfish.jersey.media/jersey-media-jaxb/2.22.2</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2/hk2-api/2.4.0-b34</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2/hk2-locator/2.4.0-b34</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2/hk2-utils/2.4.0-b34</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2/osgi-resource-locator/1.0.1</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2.external/javax.inject/2.4.0-b34</bundle>
<bundle start-level="33" dependency="true">mvn:org.glassfish.hk2.external/aopalliance-repackaged/2.4.0-b34</bundle>
<bundle dependency="true">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
<bundle dependency="true">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
<bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/2.0.1</bundle>
<bundle dependency="true">mvn:org.javassist/javassist/3.18.1-GA</bundle>
<bundle dependency="true">mvn:org.jvnet.mimepull/mimepull/1.9.6</bundle>
<bundle start-level="80">mvn:com.eclipsesource.jaxrs/publisher/5.3.1</bundle>
<bundle start-level="80">mvn:javax.ws.rs/jsr311-api/1.1.1</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.moxy/2.6.4</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.core/2.6.4</bundle>
<bundle start-level="80">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
<bundle start-level="80">mvn:org.glassfish/javax.json/1.0.4</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.jpa/2.6.4</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/javax.persistence/2.1.1</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.asm/2.6.4</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.jpa.jpql/2.6.4</bundle>
<bundle start-level="80">mvn:org.eclipse.persistence/org.eclipse.persistence.antlr/2.6.4</bundle>
</feature>
Обычно это работает, но когда я попытался зарегистрировать прослушиватель событий, как описано в вики слушатель никогда не вызывался. Другая проблема заключается в количестве библиотек в функции с «магическими числами» в качестве начальных уровней и потенциальных проблемах при обновлении платформы.
Есть ли у pax-web механизм публикации конечных точек jax-rs, который я мог бы использовать вместо этой фальшивой функции? Что мне нужно активировать, чтобы мои конечные точки были опубликованы?