【问题标题】:Axis2 in Felix 1.4.0 OSGiFelix 1.4.0 OSGi 中的 Axis2
【发布时间】:2012-04-20 03:35:03
【问题描述】:

我尝试使用 maven-bundle-plugin 将 axis2 (v. 1.5.1) 及其依赖项嵌入到 osgi 包中。在我的项目的 pom 中,我有以下标签:

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

为了将所有axis2依赖项(和传递的依赖项)嵌入到最终的jar文件中。 jar 文件可以在 Felix 中成功安装,但问题是当另一个 bundle 尝试使用这个 jar 的一个类中的方法时,我得到了异常:

javax.xml.stream.FactoryConfigurationError: Requested factory 
    com.ctc.wstx.stax.WstxInputFactory cannot be located.  
    Classloader =sun.misc.Launcher$AppClassLoader@9cab16

com.ctc.wstx.stax.WstxInputFactory 类位于嵌入到 jar 中的 woodstox wstx-asl 工件中,因此不应抛出此异常。 我也尝试将这个工件放入另一个包中,但发生了同样的错误。

这里有什么问题?

this discussion 他们声明这是一个类加载器问题,但我找不到任何解决方案。

谢谢

【问题讨论】:

    标签: maven osgi axis2 apache-felix


    【解决方案1】:

    在您提到的邮件列表线程中,我已经描述了一种解决方案,它不是将 StAX 嵌入捆绑包中,而是使用 OSG 化版本的 StAX API 和实现 (Woodstox)。

    如果将 StAX 嵌入到包中是一项硬性要求,那么您需要添加一个包激活器,该激活器调用 org.apache.axiom.om.util.StAXUtils 中的静态 setFactoryPerClassLoader 方法将该属性设置为 false。至少这应该适用于通过 Axiom 使用 StAX 的任何代码(包括 Axis2),但如果存在直接与 StAX 交互的代码,您可能仍然会遇到此问题。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 2018-05-14
      • 1970-01-01
      • 2016-02-23
      • 2010-11-12
      • 2014-12-19
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多