osgi-jax-rs-connector、jersey、およびbndtoolsを使用して簡単なosgi restエンドポイントを取得しようとしています。OSGI REST "Jerseyがまだ準備されていません" - HK2 ServiceLocatorGeneratorのデフォルトの実装が見つかりません
私はpublisher-5.3.1.jarバンドルとjersey-all-2.22.2.jarバンドル(どちらもosgi-jax-rs-connectorによって提供されています)を自分自身の別々のバンドルにまとめています。注釈を使用して残りのエンドポイントを提供する別のバンドルがあります。
bndrunファイルを使用してApache Felixで解決して実行でき、gogoシェルで自分の残りのエンドポイントがcom.eclipsesource.jaxrs.publisherで使用されるosgiサービスとして登録されていることを確認します。
アプリが起動すると、それが記録されます:
org.glassfish.hk2.utilities.reflection.Logger warning
WARNING: Cannot find a default implementation of the HK2 ServiceLocatorGenerator
を、私は私が手ブラウザから私のAPIをヒットしようとすると:
HTTP ERROR: 503
Problem accessing /services/my-service. Reason:
Jersey is not ready yet!
Powered by Jetty://
私のラップジャージ/パブリッシャbnd.bndファイルは次のとおりです。
Bundle-Version: 2.22.2.${tstamp}
javac.source: 1.8
javac.target: 1.8
-includeresource: OSGI-OPT/[email protected]/jersey-publisher.jar
-classpath: lib/jersey-all-2.22.2.jar, lib/publisher-5.3.1.jar
-sources: true
Export-Package: javax.ws.rs*;version=2.0,\
org.jvnet.hk2.annotations;version="1.0",\
org.jvnet.hk2.component;version="1.0",\
org.jvnet.hk2.external.generator;version="1.0",\
org.jvnet.hk2.external.runtime;version="1.0";uses:="org.jvnet.hk2.annotations",\
org.jvnet.hk2.internal;version="1.0";uses:="org.jvnet.hk2.external.runtime",\
org.jvnet.mimepull;version="1.0",\
org.jvnet.tiger_types;version="1.0"
-privatepackage: *
Import-Package: !jersey.repackaged.com.google.common.cache.LocalCache.jersey.repackaged.*,\
!jersey.repackaged.com.google.common.collect.AbstractMapBasedMultimap.jersey.repackaged.*,\
!jersey.repackaged.com.google.common.collect.AbstractMultimap.jersey.repackaged.*,\
!jersey.repackaged.com.google.common.collect.FilteredKeyMultimap.jersey.repackaged.*,\
!jersey.repackaged.com.google.common.collect.ImmutableMultimap.jersey.repackaged.*,\
!jersey.repackaged.com.google.common.collect.MapMakerInternalMap.jersey.repackaged.*\
*
私はorg.jvnet.hk2.external.generator.ServiceLocatorGeneratorImplがSを実装するクラスであることがわかりますerviceLocatorGeneratorインターフェース(アクティブなjersey-allバンドルjarファイルに含まれています)と、ラップされたラップバンドルjarファイルが含まれています。