Ich habe REST-Endpunkte in OSGi-Container (Karaf) mit javax.ws.rs
Annotationen veröffentlicht. HttpService wird von pax-web erstellt, und jax-rs-Dienste werden von com.eclipsesource.jaxrs/publisher
veröffentlicht.Veröffentlichen von JAX-RS-Endpunkten mit Pax-Web
Um diesen Verleger zu verwenden, wird ein ganz ungeheuerliches Merkmal geschmiedet wurde (irgendwo aus dem Internet kopiert):
<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>
Es funktioniert im Allgemeinen, aber wenn ich zu register event listener as described in wiki versucht habe, wurde der Hörer nie genannt. Ein weiteres Problem ist die Anzahl der Bibliotheken im Feature mit "magischen Zahlen" als Startlevels und möglichen Problemen durch Plattform-Upgrades.
Haben Pax-Web einen Mechanismus für die Veröffentlichung von Jax-Rs-Endpunkten, die ich anstelle dieser gefälschten Funktion verwenden könnte? Was muss ich aktivieren, damit meine Endpoints veröffentlicht werden?
Zur letzten Frage, noch nicht. Es ist Arbeit in Arbeit bezüglich der Registrierung von Jax-Rs-Endpunkten, da dieser Teil der OSGi-Spezifikation noch nicht vollständig spezifiziert ist. Als einer der Betreuer kann ich nur sagen, wir lieben Beiträge :) –