如何使用GoGo Shell在OSGi中更改默认命令范围并为自定义命令实施自定义范围?

时间:2019-03-04 09:33:44

标签: osgi apache-felix equinox gogo-shell

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

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

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

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

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

=>我希望用户必须将myScope:myFunc写入外壳。有可能吗?

感谢您的帮助:-)

1 个答案:

答案 0 :(得分:2)

由于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