java - OSGi 是否从根本上与 JSR-223 脚本语言发现不兼容?

标签 java osgi jsr223

我最近编写了一种小型专业脚本语言,并使用 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 语言。

[1] http://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java

[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/

相关文章:

java - 如果数据不变,我应该使用什么类型的Map?

java - 从不同的插件访问资源包

performance - JSR223 后处理器在 jmeter 中解析 json

java - JMeter 脚本引擎允许缓存和编译

java - 在父应用程序和 OSGi 框架之间传递参数

javascript - 用于生成 JavaScript 代码的 Java 库

java - 取消文件打开对话框后出现 InterruptedException - 1.6.0_26

Java:我的发行版与 IDE 调试不同

java - Maven + FindBugs - 高优先级警告失败

character-encoding - karaf配置属性乱码