我想创建一个包含脚本引擎( JSR-223兼容)的OSGi(Equinox)包,并通过ScriptEngineManager.getEngineFactories()
在另一个包中使用它。
然而,Java Scripting API(jar文件服务发现)的服务发现机制无法在已安装的软件包中发现脚本引擎。
我已经看过few answers on the topic,建议使用Apache Felix或Apache Sling,因为他们有一个解决方案。但是我想知道Equinox实现是否有办法处理这个问题?
答案 0 :(得分:1)
嗯,OSGi 5会支持它,它被称为Service Loader Mediator。这将有效地将OSGi服务与java.util serviceloader。
联系起来Apache Aries有一个名为Spi-Fly的实现,应该可行。我想它更多针对Felix,但通常OSGi实现非常兼容。
说实话,我从来没有走到最底层,所以我不能说出个人经验。
好运,弗兰克答案 1 :(得分:1)
我已根据Is OSGi fundamentally incompatible with JSR-223 Scripting Language Discovery?使用OSGiScriptEngineManager和朋友的答案之一实施了一个解决方案,效果非常好。
那么最大的问题可能是为相关脚本语言找到合适的JSR 223实现: - )