2017-06-08 7 views
2

javax.ws.rsアノテーションを使用して、OSGiコンテナ(Karaf)にRESTエンドポイントを公開しました。 HttpServiceはpax-webによって作成され、jax-rsサービスはcom.eclipsesource.jaxrs/publisherによって発行されます。pax-webを使用したJAX-RSエンドポイントの公開

<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> 

それは一般的に動作しますが、私はregister event listener as described in wikiにしようとしたとき、リスナーが呼び出されることはなかった。この発行者を使用するためには

は、かなり巨大な機能が偽造された(インターネットからどこかにコピーされました)。もう1つの問題は、フィーチャーのライブラリの量で、「マジックナンバー」を開始レベルとし、プラットフォームのアップグレードによる潜在的な問題です。

pax-webにはjax-rsエンドポイントを公開するためのメカニズムがありますが、これは偽造機能の代わりに使用できますか?私のエンドポイントが公開されるように、私は何を活性化する必要がありますか?

+0

最終的な質問には、まだありません。 OSGi仕様のその部分がまだ完全には指定されていないため、jax-rsエンドポイントの登録に関する進行中の作業です。 メンテナーの一人として、私はちょうど、私たちが貢献を愛すると言うことができます:) –

答えて

0

PAX-Web経由で探しsourcedocumentationJAX-RS(RESTful Webサービス用のJava API)のサポートが含まれているように見えない(User-GuideDeveloper-Guideを参照)、またはJSR 311

しかし、RESTeasy、Jersey、Apache CXF、othersなど、OSGiのJAX-RSエンドポイントを公開するために使用できるその他の数はoptionsです。うまくいけば、それらのうちの1つを使用して、あなたが記述したアーキテクチャを改善することができます。さまざまなオプションの中で、CXF implementationが最もよく文書化されているようで、OSGiとの統合はかなり簡単です。少なくとも私の経験に基づいています。

関連する問題