2016-08-25 9 views
0

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

答えて

0

あなたはワイルドカードで<Import-Package>を使用し、OSGiのインポート・パッケージのヘッダは、ワイルドカードに一致するすべてのパッケージのために生成され、あなたのバンドル内のコードが依存しています

期待しているパッケージのインポートがmaven-bundle-pluginによって生成されない場合は、バンドル内のコードが実際にそのパッケージを参照していないことを意味します。

このパッケージをインポートするのではなく、バンドルに含めないでください。なぜそれをインポートしたいのですか?

+0

こんにちはNeil、アイデアは、WSDLと生成されたクラスをバンドルjarに格納することでした。しかし、それらは単に共有ライブラリのようなものです。次に、共有ライブラリのクラスを使用してエンドポイントを公開するサービスを提供します。パッケージはMANIFEST.MFに含まれていなければなりません。コード内のサービスクラスをランダムにインスタンス化すると、これを修正するかどうかを今チェックします。 – djb

+0

それはそれでした。 ObjectFactoryの=新しいObjectFactory(); ***** OSGiの息子。ありがとう男 – djb

+0

OSGiを「*****の息子」と呼ぶことについて私はあなたに満足していますか?最初は、問題はOSGiではなく、ビルドツールの1つであるmaven-bundle-pluginでした。第二に、それが何をしているかは、文書化され、非常に合理的です。 –

関連する問題