Java API';s newInstance和OSGi
在任何情况下都可以直接在OSGi上下文中创建新的工厂实例吗?具体来说,Java API中的newInstance()如何 例如,调用TransformerFactory.newInstance()可以吗,还是应该避免?我认为这应该是可以的,因为它是JavaAPI的一部分,但是文档指定META-INF/services用于定位实现。这是否意味着它在与OSGi和第三方xml转换器(如Saxon)结合使用时无法按预期工作Java API';s newInstance和OSGi,java,osgi,Java,Osgi,在任何情况下都可以直接在OSGi上下文中创建新的工厂实例吗?具体来说,Java API中的newInstance()如何 例如,调用TransformerFactory.newInstance()可以吗,还是应该避免?我认为这应该是可以的,因为它是JavaAPI的一部分,但是文档指定META-INF/services用于定位实现。这是否意味着它在与OSGi和第三方xml转换器(如Saxon)结合使用时无法按预期工作 在OSGi中使用XML相关工厂(如TransformerFactory)的正确方
在OSGi中使用XML相关工厂(如TransformerFactory)的正确方法是什么?您应该避免在OSGi中使用SPI。包含工厂类的包的类加载器通常看不到实现API的包的META-INF/服务 实现API的捆绑包应该注册一个或多个OSGi服务,而不是META-INF/services。只执行实例化和OSGi服务注册的适配器包可以很容易地编写 您可以在OSGi概要规范的“702XML解析器服务规范”中找到SAXParser和SAXParserFactory的示例。对于TransformerFactory,应使用类似的解决方案 更新 有些情况下,无法将这些工厂类用作OSGi服务。例如:如果您使用的技术使用TransformerFactory 对于与XML相关的API,我创建了
- 包含xml API及其实现
- 以在xmlcommons完整捆绑包中搜索实现的方式重写类加载机制