2012-04-06 10 views
2

私は、maven-bundle-pluginを使って、axis2(v.1.5.1)とその依存関係をosgiバンドルに埋め込もうとしています。すべてのAxis2の依存関係(と推移するもの)は、最終的なjarファイルに埋め込まれていることを順番にAxis2 in Felix 1.4.0 OSGi

<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 
<Embed-Transitive>true</Embed-Transitive> 

:私のプロジェクトのポンポンでは、私は、次のタグを持っています。 jarファイルは、フェリックスに正常にインストールできますが、問題は別のバンドルは、このjarファイルのクラスからメソッドを使用しようとすると、私は例外を取得することである:

javax.xml.stream.FactoryConfigurationError: Requested factory 
    com.ctc.wstx.stax.WstxInputFactory cannot be located. 
    Classloader [email protected] 

com.ctc.wstx.stax.WstxInputFactoryクラスはwoodstox wstx-aslアーティファクトに位置していますjarに埋め込まれているため、この例外はスローされるべきではありません。 このアーティファクトを別のバンドルに入れようとしましたが、同じエラーが発生します。

ここで問題は何ですか?

this discussionには、クラスローダの問題であると記載されていますが、解決策が見つかりません。

はあなたが言及したメーリングリストのスレッドでは、あなたに

答えて

2

をありがとう、私はすでにバンドルにStAXのを埋め込むことが、StAXのAPIおよび実装のOSGifiedバージョン(Woodstox)を使用しないで一つの解決策を、説明しました。

StAXをバンドルに組み込むことが困難な場合は、org.apache.axiom.om.util.StAXUtilsのstatic setFactoryPerClassLoaderメソッドを呼び出すバンドルアクティベータを追加して、そのプロパティをfalseに設定する必要があります。少なくともこれはAxiomからStAXを使用する任意のコード(Axis2を含む)で動作するはずですが、StAXと直接対話するコードが存在する場合でも問題が発生する可能性があります。

関連する問題