我最近编写了一种小型专业脚本语言,并使用 Maven 导出了一个 OSGi 兼容包,该包还将服务描述符导出到“META-INF/services/javax.script.ScriptEngineFactory
"服务注册文件。
问题在于,虽然 OSGi 导入和导出包很好,但服务注册表似乎与 OSGi 不兼容(因为 OSGi 将其 bundle 放在通用类路径之外,并对模块使用单独的类加载器)。
我的问题是,我认为 OSGi 与服务发现机制不兼容是否正确,如果不是,我可以向我的包元数据添加什么以便 ScriptEngineManager.getEngineFactories()
将列出我的脚本引擎在 OSGi 环境中?
最佳答案
Apache Sling确实在 OSGi 环境中使用此机制来管理其 JSR-233 兼容脚本引擎,主要是通过其 ScriptEngineManagerFactory 类 [1]。另请参阅 [2] 以获取示例自定义脚本引擎。
如果 Sling 与 JSR-233 兼容,则将您的脚本引擎添加到 Sling 应该可以。最简单的测试方法可能是遵循“15 分钟内使用 Sling”教程 [3],使用您的语言而不是那里使用的服务器端 javascript 语言。
[2] http://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/javascript
[3] http://sling.apache.org/site/discover-sling-in-15-minutes.html
关于java - OSGi 是否从根本上与 JSR-223 脚本语言发现不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558055/