maven - Felix 1.4.0 OSGi 中的 Axis2

标签 maven osgi apache-axis apache-felix

我尝试使用 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 中成功安装,但问题是当另一个包尝试使用此 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类位于woodstox wstx-asl Artifact 嵌入到 jar 中,因此不应抛出此异常。 我也尝试将此 Artifact 放入另一个包中,但出现了相同的错误。

这里有什么问题?

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

谢谢

最佳答案

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

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

关于maven - Felix 1.4.0 OSGi 中的 Axis2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10044803/

相关文章:

Java 9 + maven + junit : does test code need module-info. java 自己的,放在哪里?

java - ava.lang.NullPointerException : null at org. apache.catalina.loader.WebappClassLoader.findResources(WebappClassLoader.java:1368)~[na:na]

java - 如何立即获取 ManagedService 配置?

java - 部署网络服务

java - Eclipse maven build 没有安装依赖

maven - 如何在maven中过滤测试资源?

java - 如何在 3 个不同的 osgi 包(即 3 个不同的 java 插件项目)中使用相同的对象

java - 出于 OSGI 目的将 jfxrt 移至 lib/ext

web-services - Apache axis 报错找不到services.xml

java - 获取 java.net.SocketTimeoutException : connect timed out error