Felix Dependency-Manager 没有创建 GoGo-Command
Felix Dependecy-Manager not creating GoGo-Command
我正在尝试使用不带注释的 Felix-Dependency-Manager(版本 3.2.0)创建一个 GoGo-Shell-Command。
据我了解,gogo-runtime 使用白板模式并使用键 CommandProcessor.COMMAND_SCOPE 和 CommandProcessor.COMMAND_FUNCTION 扫描具有属性的服务。
在我的例子中,包已启动,服务已注册到正确的属性,但我的命令未列在 "help" 下,当我尝试调用它时它也不起作用。
以下代码在 BundleActivator (DependencyActivatorBase) 中注册服务:
Properties props = new Properties();
props.put(CommandProcessor.COMMAND_SCOPE, "test");
props.put(CommandProcessor.FUNCTION_SCOPE, new String[] {"command"});
manager.add(createComponent()
.setInterface(Object.class.getName(), props)
.setImplementation(MyConsole.class)
.add(createServiceDependency()
.setService(MyService.class)));
当 运行 我的代码时,以下捆绑包与 lb-Command 一起列出。
org.apache.felix.gogo.command
org.apache.felix.gogo.runtime
org.apache.felix.gogo.shell
org.apache.felix.dependencymanager
org.apache.felix.dependencymanager.shell
mybundle.service
mybundle.api
mybundle.console
使用 BndTools 完成开发。
我是不是漏掉了什么?
首先,您关于如何注册 gogo 命令的假设是正确的:使用了白板模式,范围和函数属性决定了命令。
您没有 post MyConsole
的代码。它实际上包含一个名为 command
的方法吗?如果不是,那可能是问题所在。
另一个潜在的问题可能是您实际上没有在清单中添加 Bundle-Activator
行。
如果不是,请使用dm notavail
命令查看是否有任何未注册的组件(因为缺少依赖项)。
我正在尝试使用不带注释的 Felix-Dependency-Manager(版本 3.2.0)创建一个 GoGo-Shell-Command。
据我了解,gogo-runtime 使用白板模式并使用键 CommandProcessor.COMMAND_SCOPE 和 CommandProcessor.COMMAND_FUNCTION 扫描具有属性的服务。
在我的例子中,包已启动,服务已注册到正确的属性,但我的命令未列在 "help" 下,当我尝试调用它时它也不起作用。
以下代码在 BundleActivator (DependencyActivatorBase) 中注册服务:
Properties props = new Properties();
props.put(CommandProcessor.COMMAND_SCOPE, "test");
props.put(CommandProcessor.FUNCTION_SCOPE, new String[] {"command"});
manager.add(createComponent()
.setInterface(Object.class.getName(), props)
.setImplementation(MyConsole.class)
.add(createServiceDependency()
.setService(MyService.class)));
当 运行 我的代码时,以下捆绑包与 lb-Command 一起列出。
org.apache.felix.gogo.command
org.apache.felix.gogo.runtime
org.apache.felix.gogo.shell
org.apache.felix.dependencymanager
org.apache.felix.dependencymanager.shell
mybundle.service
mybundle.api
mybundle.console
使用 BndTools 完成开发。
我是不是漏掉了什么?
首先,您关于如何注册 gogo 命令的假设是正确的:使用了白板模式,范围和函数属性决定了命令。
您没有 post MyConsole
的代码。它实际上包含一个名为 command
的方法吗?如果不是,那可能是问题所在。
另一个潜在的问题可能是您实际上没有在清单中添加 Bundle-Activator
行。
如果不是,请使用dm notavail
命令查看是否有任何未注册的组件(因为缺少依赖项)。