xstream对象反序列化需要Osgi循环引用?

时间:2014-01-09 11:38:48

标签: osgi eclipse-rcp xstream

Bundle A取决于Bundle XStream。

但是Bundle XStream也需要访问Bundle A中的类,否则我无法进行对象反序列化ala (BundleA.class)xstream.fromXml(xmlString)

现在我所做的是在BundleA包中将Bundle XStream中的Import-Package导出并将它们导出到BundleA中,但由于BundleA也使用了XStream,因此Eclipse会检测到“循环引用”。这一切似乎运行良好,但我没有看到这个Eclipse错误的重点呢? 我怎样才能在osgi中解决这个问题?

1 个答案:

答案 0 :(得分:1)

通常,您应该尝试在捆绑包之间获得明确的客户端 - 服务器包关系。因此,如果可能的话,你应该摆脱循环引用。在您可能的情况下。

与您指示的内容相反,如果您能够告诉功能使用不同的类加载器来加载流中指示的类,则XStream包可以对来自另一个包的对象进行反序列化。由于您似乎在使用XStream,因此可以使用:

xstream.setClassLoader(bundleAClassLoader);

其中bundleAClassLoader是一个可以访问域类的类加载器(bundle A的类加载器)。在这种情况下,XStream包的Import-Package不是必需的。