我想创建一个包含脚本引擎(JSR-223 兼容)的 OSGi (Equinox) bundle ,并通过 ScriptEngineManager.getEngineFactories()
在另一个 bundle 中使用它。
但是,Java Scripting API 的服务发现机制(jar 文件服务发现)无法发现已安装 bundle 中的脚本引擎。
我已经看到了few answers on the topic ,建议使用 Apache Felix 或 Apache Sling,因为他们有解决方案。但是我想知道 Equinox 实现是否有办法解决这个问题?
请您参考如下方法:
好吧,OSGi 5 将支持它,它被称为 Service Loader Mediator 。这将有效地桥接 OSGi 服务与 java.util 服务加载器。
Apache Aries 有一个名为 Spi-Fly 的实现。哪个应该有效。我猜它更针对 Felix,但通常 OSGi 实现非常兼容。
说实话,我从来没有深究过这个问题,所以我无法以个人经验来说话。
祝你好运,弗兰克