【问题标题】:osgi blueprint catch event updateosgi 蓝图捕获事件更新
【发布时间】:2013-05-05 22:42:49
【问题描述】:

我想在我的包更新、卸载或新建时执行脚本。

我实际上使用了 destroy-method 和 init-method,但如果我的包只有“停止”或“删除”,我现在不用。

 <bean id="plugin" class="com.toto.OrderPlugin" destroy-method="remove" init-method="install">

对于示例,我为什么要捕获事件 当我的包更新时:

  1. 我想知道旧版本和新版本并在条件下执行脚本 如果我的包是卸载:
  2. 我想删除数据表 如果我的捆绑包是新的
  3. 我想创建数据表

执行此类流程的正确方法是什么?可以举个例子吗?

谢谢

【问题讨论】:

    标签: osgi blueprint-osgi


    【解决方案1】:

    那么在这种情况下,我会选择性病。活化剂。跳过使用蓝图 xml 并改用 Bundle-Activator,这样您就可以完全控制您的捆绑启动行为。

    【讨论】:

    • 谢谢 Achim,我可以用 BundleActivator 做,但我想用蓝图做同样的过程,没有办法用蓝图来做。蓝图不知道捆绑包的状态?
    • 在蓝图扩展程序启动时,捆绑包已经处于活动状态:-) 您可以尝试使用 init 和 destroy 方法,这也可能有效。对于 init,它被称为:init-method
    • 但是初始化方法的问题,我不知道我的包是安装还是只是激活。我也想知道是否更新以检查新旧版本。
    • 这是这里的主要问题,您只是无法使用蓝图抓住它,实际上也无法使用激活器。当捆绑包从已解决变为活动时使用激活器,此时您只是不知道您的捆绑包实际上是否已更新或只是在停止后简单地启动。您可能需要一个特殊的 Bundle 跟踪器之类的东西,它可以为您完成。在这种情况下,您可能会找到信息。捆绑包本身不知道它发生了什么:-)
    • 好的,我继续。在本机中使用蓝图是不可能做到这一点的。我必须创建一个捆绑跟踪器并捕获事件。 PS:还有3.0.0 pax版本,发布??? ?谢谢阿奇姆 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2021-09-26
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多