2013-09-26 48 views
0

我必须在父应用程序和嵌入OSGi之间传递参数。我使用Equinox并在我的Launcher类中运行FrameworkFactory的OSGi,然后安装并启动捆绑软件。有可能传递对象引用,甚至传递一些原始类型来捆绑或服务?在父应用程序和OSGi框架之间传递参数

回答

2

启动框架后,您可以获取系统包上下文并访问并调用由框架中的包注册的服务。必须小心服务类型,因为它们很可能是从捆绑包加载的,因此这些类型不会直接显示到启动代码中。但是你可以使用反射。或者你可以把这些类型放在框架类加载器中,并通过org.osgi.framework.system.packages.extra你的启动器设置的框架属性从系统包中导出它们。

+0

感谢您的回答,但这不是我的问题的解决方案。我想从我的父应用程序类(这将是OSGi框架的启动器)运行具有特定参数(例如对象引用)的包或服务。您正在讨论通过system_packages_extra将整个类发送到系统包,以便在OSGi Framework中具有可见性 - 我不需要它(我通过添加需要将类osgi classpath作为包来添加的类来解决它)。 –

+0

我可以使用反射来运行带有参数的启动器类的服务方法吗?但是,我如何才能在OSGi框架之外获得服务类名称? –

+0

您可以使用反射来调用启动器中您的类型不可见的服务的方法。您可以传递任何可以直接或通过反射创建的参数类型。 –

相关问题