【问题标题】:How to change the default command scope in OSGi with GoGo Shell and enforce custom scopes for custom commands?如何使用 GoGo Shell 更改 OSGi 中的默认命令范围并为自定义命令强制执行自定义范围?
【发布时间】:2019-07-25 14:12:08
【问题描述】:

我有一个在 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 写入外壳。这可能吗?

感谢您的帮助:-)

【问题讨论】:

    标签: osgi apache-felix equinox gogo-shell


    【解决方案1】:

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

    【讨论】:

    • 谢谢!它工作正常。如何强制执行我的命令的自定义范围?你对此有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多