2012-04-06 66 views
2

我嘗試使用maven-bundle-plugin將axis2(v.1.5.1)及其依賴項嵌入到osgi包中。在我的項目的POM,我有以下標籤:Felix 1.4.0中的Axis2 OSGi

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

爲了使所有的Axis2依賴關係(和傳遞的)被嵌入到最終的jar文件。該jar文件可以成功Felix的安裝,但問題是,當另一束嘗試使用方法,從一類這個罐子,我得到異常:

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和實現(Woodstox)的OSGified版本。

如果將StAX嵌入到捆綁包中是一項艱難的需求,那麼您需要添加一個捆綁激活器來調用org.apache.axiom.om.util.StAXUtils中的靜態setFactoryPerClassLoader方法以將該屬性設置爲false。至少這應該適用於通過Axiom使用StAX的任何代碼(包括Axis2),但如果存在直接與StAX交互的代碼,您可能仍會遇到問題。

相關問題