I have REST endpoints published in OSGi container (Karaf) using javax.ws.rs
annotations. HttpService is created by pax-web, and jax-rs services are published by com.eclipsesource.jaxrs/publisher
.
In order to use this publisher, a quite monstrous feature was forged (copied somewhere from internet):
<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>
It generally works, but when I've tried to register event listener as described in wiki, the listener was never called. Another issue is the amount of libraries in the feature with 'magic numbers' as start levels, and potential problems by platform upgrade.
Do pax-web have a mechanism for publishing jax-rs endpoints, which I could use instead that forged feature? What do I need to activate, so that my endpoints would be published?