osgi同一类但classcastexception

时间:2014-11-20 13:04:03

标签: osgi osgi-bundle jbossfuse

获得一个问题,其中A类无法在osgi中转换为A类。 Point是这个类A没有被导出到任何其他bundle以及它创建的位置。在导出包的pom中,它被称为“!A”,因此不会导出A.我们仍然得到了这个问题。但是重新安装捆绑包可以正常工作。无法重现问题然后突然又回来了。任何想法。

该类是实体类和内部 - 不在任何其他项目中

在maven-bundle-plugin中我们有

<Private-Package>
  com.xxx.yyy.entity.*
</Private-Package>
<Export-Package>
  !com.xxx.yyy.entity.*
</Export-Package>

1 个答案:

答案 0 :(得分:0)

当我们使用具有String-Class缓存的技术而没有直接连接到Class的捆绑包时,我们遇到了类似的问题。

让我们说有捆绑A和捆绑T(技术)。 Bundle A已更新,但在第一次启动Bundle A时加载的类仍在Bundle T的缓存中。

如果OSGi容器中有一项技术可以在重启期间更新捆绑包,那么这可能会变得非常神奇。一个典型的情况是技术想要对类进行字节码操作。它实现了一个Bundle Weaving Hook,但它必须更新在魔法技术包之前启动的所有相关包,以便能够捕获类加载。这种神奇技术的一个例子是Apache Aries Proxy。

Btw。:堆栈跟踪和一些源代码可以帮助我们了解问题出现在哪种技术中。