如何使用 GoGo Shell 更改 OSGi 中的默认命令范围并为自定义命令强制执行自定义范围?

How to change the default command scope in OSGi with GoGo Shell and enforce custom scopes for custom commands?

我有一个在 Equinox 上运行的 OSGi 环境。为了执行自定义命令,我使用 gogo shell (org.apache.felix.gogo.command, org.apache.felix.gogo.shell)。

默认情况下,命令范围设置为 equinox,因此 help 命令不打印任何内容。如果我使用 felix:help 它会打印所有可用的命令。

如何将默认命令范围切换为 felix?有没有办法给系统一个启动脚本来设置它?

此外,我如何强制用户使用我在组件 属性 中引入的范围,如下所示:

property = {
        "osgi.command.scope=myScope",
        "osgi.command.function=myFunc"
    }

=> 我希望用户必须将 myScope:myFunc 写入 shell。无论如何,这可能吗?

感谢您的帮助:-)

您可以创建自己的命令,因为 Gogo 有 闭包

Welcome to Apache Felix Gogo

g! 
g! h = { felix:help }
felix:help
g! h
felix:bundlelevel
felix:cd
felix:frameworklevel 
...

g! $h
felix:help

您可以将启动脚本放在 ./etc/gosh_profile 中,其中 . 是当前工作目录。

SCOPE 变量设置以冒号分隔的搜索范围路径。

g! SCOPE='felix:*'

Gogo 比我认识的几乎每个人都认为的要强大得多。 Gogo 基本上可以使用类似 shell 的语法调用任何 Java 函数。你可以在这里看到一些例子:https://v2archive.enroute.osgi.org/appnotes/gogo.html