2012-04-06 70 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交互的代码,您可能仍会遇到问题。

相关问题