Reflection 如何通过程序监控和管理(启动、停止、安装、卸载、更新)OSGi捆绑包

Reflection 如何通过程序监控和管理(启动、停止、安装、卸载、更新)OSGi捆绑包,reflection,osgi,Reflection,Osgi,我正在从事一个项目,该项目需要使用预编程指令在基于OSGi的应用程序中监控和管理(启动、停止、安装、卸载、更新)OSGi捆绑包,类似于java反射,OSGi应用程序可以通过监控自身及其上下文来反映自身,它可以更新或删除某些捆绑包,或者可以添加(安装并启动)新捆绑包 例如,有一个使用OSGi捆绑包开发的聊天应用程序。为了给它添加自我管理特性,需要有一种机制来自动监控和管理(安装/卸载、启动/停止、更新)OSGi捆绑包(无需人工干预或尽可能少的人工参与).你知道如何做到这一点吗 我试图解释这个问题,

我正在从事一个项目,该项目需要使用预编程指令在基于OSGi的应用程序中监控和管理(启动、停止、安装、卸载、更新)OSGi捆绑包,类似于java反射,OSGi应用程序可以通过监控自身及其上下文来反映自身,它可以更新或删除某些捆绑包,或者可以添加(安装并启动)新捆绑包

例如,有一个使用OSGi捆绑包开发的聊天应用程序。为了给它添加自我管理特性,需要有一种机制来自动监控和管理(安装/卸载、启动/停止、更新)OSGi捆绑包(无需人工干预或尽可能少的人工参与).你知道如何做到这一点吗

我试图解释这个问题,但是如果你不理解我的问题,请尽管问

另外,我正在使用OSGi Equinox框架


尊敬。

看看
org.osgi.framework
。从捆绑包的开始,您可以安装和获取捆绑包。API允许您停止、启动和更新捆绑包。

看看
org.osgi.framework
。从捆绑包的开始,您可以安装和获取捆绑包。API允许您停止、启动和更新捆绑包e bundles。

该类可能也对您有用,它将通知您任何bundle的启动或停止。

该类也可能对您有用,它将通知您任何bundle的启动或停止。

OSGi框架已经包含了这样一种机制,并使用最基本的OSGi接口

如果您想从OSGi捆绑包内部控制它,我们将其称为管理代理捆绑包,您可以使用此捆绑包的BundleContext来:

installBundle(java.lang.String位置) 从指定的位置标识符安装捆绑包。 getBundles() 返回所有已安装捆绑包的列表。 getBundle(长id) 返回具有指定标识符的捆绑包

一旦您拥有了Bundle对象,您就可以查找关于Bundle的所有信息,如名称、导入的包等;并启动、停止、更新Bundle。因此,您可以在那里实现zero administration策略声明的任何逻辑(例如,出现错误时重新启动所有插件包,或搜索合适的插件并在需要呈现新内容时安装,或其他)

现在,如果您想从“外部”OSGi执行所有这些操作,您必须在管理代理包中为外部发布某种类型的接口。一种可能是web页面(OSGi包含一个简单的嵌入式web服务器,请检查HTTPService)。还有许多其他接口,取决于您想要实现什么


希望这能有所帮助:)

OSGi框架已经包含了这样一种机制,并使用最基本的OSGi接口让您完全控制捆绑包的生命周期

如果您想从OSGi捆绑包内部控制它,我们将其称为管理代理捆绑包,您可以使用此捆绑包的BundleContext来:

installBundle(java.lang.String位置) 从指定的位置标识符安装捆绑包。 getBundles() 返回所有已安装捆绑包的列表。 getBundle(长id) 返回具有指定标识符的捆绑包

一旦您拥有了Bundle对象,您就可以查找关于Bundle的所有信息,如名称、导入的包等;并启动、停止、更新Bundle。因此,您可以在那里实现zero administration策略声明的任何逻辑(例如,出现错误时重新启动所有插件包,或搜索合适的插件并在需要呈现新内容时安装,或其他)

现在,如果您想从“外部”OSGi执行所有这些操作,您必须在管理代理包中为外部发布某种类型的接口。一种可能是web页面(OSGi包含一个简单的嵌入式web服务器,请检查HTTPService)。还有许多其他接口,取决于您想要实现什么



希望这有帮助:)

您可能想看看Apache Felix FileInstall源代码。它可能是最简单的“管理代理”,可用于完全管理OSGi框架(包括非常重要的配置管理员).

您可能需要查看Apache Felix FileInstall源代码。它可能是最简单的“管理代理”,可用于完全管理OSGi框架(包括非常重要的配置管理员).

这可能取决于您使用的是哪个OSGi框架。您使用的是哪一个?对不起,我忘了提到,这是Equinox。到底为什么使用什么框架会有不同?这可能取决于您使用的是哪一个OSGi框架。您使用的是哪一个?对不起,我忘了提到,这是Equinox。它到底为什么会有不同rence使用了什么框架???非常感谢您的详细解释:)。是的,这当然有助于找到解决问题的可能方法。再次感谢。@ندیع㶕㶍س如果这篇文章回答了您的问题,您应该接受它,以表明(1)您有满意的回答(2)这个问题不需要进一步关注,(3)奖励分享他/她的知识来帮助您的用户非常感谢您的详细解释:)。是的,这当然有助于找到解决问题的可能方法。再次感谢。@ندیع㶕㶍س如果这篇文章回答了您的问题,您应该接受它,以表明(1)您有满意的回答(2)这个问题不需要进一步关注,(3)奖励分享他/她的知识以帮助您的用户感谢您的帮助,这绝对是前进的方向。谢谢你的帮助,这绝对是前进的方向。亲爱的,谢谢你的建议,这有助于我前进:)不要使用BundleListener,这里有外滩