これは複雑な構成の質問 である私は、ここではサンプルプロジェクト(ブランチを開発)持っている - > https://github.com/gadieichhorn/play.karaf.calculator/tree/develop宣言型のサービスを使用してApache Karaf CXF JAX-RSサービスとkarafアセンブリ
を私は機能をパッケージ化し、karafを使用-assembly私のプロジェクトが既にデプロイされているカラフのディストリビューションを作成しようとしました。
これまでのところ、ローカルのkarafにfeature/karをデプロイできますが、カスタムkarafアセンブリを作成すると、cxf RESTサービスは機能しません。
パッケージ化プロセスは自動化されています。 ビルド - >機能/ kar - >アセンブリ - >統合テスト(pax-exam) - >ドッカー - >受け入れ。ここで
2016-09-12 02:14:52,245 | WARN | qtp18647439-126 | AbstractJAXBProvider | 40 - org.apache.cxf.cxf-rt-frontend-jaxrs - 3.1.6 | javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory not found by cxf-dosgi-ri-dsw-cxf [13]]
`` `
私の機能の依存関係である:ここ
<feature>scr</feature>
<feature>aries-rsa-core</feature>
<feature>cxf-jaxrs</feature>
<feature>cxf-dosgi-provider-cxf</feature>
は私のアセンブリです:
<configuration>
<startupFeatures>
<feature>eventadmin</feature>
</startupFeatures>
<bootFeatures>
<feature>minimal</feature>
<feature>shell</feature>
<feature>shell-compat</feature>
<feature>aries-blueprint</feature>
<feature>scr</feature>
<feature>aries-rsa-core</feature>
<feature>cxf-jaxrs</feature>
<feature>cxf-dosgi-provider-cxf</feature>
<feature>calculator</feature>
</bootFeatures>
</configuration>
私のRESTサービスAPI
@Component(
name = "org.play.karaf.calculator.proxy.root",
service = {ProxyRoot.class},
property = {
"service.exported.interfaces=*",
"service.exported.configs=org.apache.cxf.rs",
"org.apache.cxf.rs.httpservice.context=/calculator",
"org.apache.cxf.rs.address=/proxy"
}
)
public class ProxyRootProvider implements ProxyRoot { ...
私のモデルは、CXFのデフォルトプロバイダーが想定していたJAXB実装です。プロバイダを追加する必要がありますか?
Karaf 4.0.5 & 4.0.6
CXF 3.1.6 & 3.1.7
牡羊座1.8.0:
は私がしてみました。 & 1.9.0DOSGi 1.8.0
私は、ディストリビューションの仕事をするために組み立て段階から何をしないのですか?
ありがとうございました。