私はFuseにCXF Webサービスアプリを持っていて、キャメルコンテキストXMLファイルの中にWSDLから生成されたファイルを含むjarファイルへの参照があります。OSGi maven-bundle-pluginが私のパッケージを残しています
<cxf:cxfEndpoint id="LookupEndpoint"
address="${my.LookupUri}"
serviceClass="com.whatever.IWebService"
wsdlURL="wsdl/MyWsdl.wsdl"/>
com.whatever.*
私<Import-Package>
リストです。 jarファイルは私の依存関係にあります。私はimport com.whatever.IWebService;
と言うことができ、それは文句を言っていません。
しかし、Mavenのバンドル・プラグインは、それは私が要求されたすべての私の他のパッケージが含まれてMANIFEST.MF
で、このパッケージが含まれていません。しかし、この1つではありません。だから、ヒューズでは、私はそれを展開すると、ClassNotFoundException、context.xmlクラスの読み込みを参照して取得します。
非常にイライラしています。プラグインが特定のパッケージをインポートするように強制する方法はありますか?彼らの自動魔法のような依存関係ソルバは無視されているので、私の<Import-Package>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${version.maven-bundle-plugin}</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>src/main/resources/META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>
*,
com.imports.this.one.fine*,
com.imports.this.one.just.fine*,
com.imports.does.not.import.this.one.*,
</Import-Package>
<Export-Package>
com.something.export.*
</Export-Package>
</instructions>
</configuration>
</plugin>
こんにちはNeil、アイデアは、WSDLと生成されたクラスをバンドルjarに格納することでした。しかし、それらは単に共有ライブラリのようなものです。次に、共有ライブラリのクラスを使用してエンドポイントを公開するサービスを提供します。パッケージはMANIFEST.MFに含まれていなければなりません。コード内のサービスクラスをランダムにインスタンス化すると、これを修正するかどうかを今チェックします。 – djb
それはそれでした。 ObjectFactoryの=新しいObjectFactory(); ***** OSGiの息子。ありがとう男 – djb
OSGiを「*****の息子」と呼ぶことについて私はあなたに満足していますか?最初は、問題はOSGiではなく、ビルドツールの1つであるmaven-bundle-pluginでした。第二に、それが何をしているかは、文書化され、非常に合理的です。 –