提供和要求复合子系统上的功能?

时间:2019-01-24 08:14:59

标签: osgi apache-karaf apache-felix osgi-bundle manifest.mf

挑战声明:

1-我有一个复合子系统,该子系统具有一个包含要约的捆绑包 能力,在捆绑清单中都提到了提供能力 在包清单和子系统清单中。

  1. 我有一个独立的捆绑包,需要此功能并提及 在独立捆绑清单中。

对于系统迁移,如果捆绑包是在ESA之前部署的 子系统,该捆绑包无法按预期启动,必须​​手动进行 部署提供功能后开始。

但是,如果我将子系统标记为功能,那么,只要子系统 部署后,独立捆绑包也进入活动状态,正在删除 需要人工干预。

如果系统被标记为复合系统而不是要素子系统, 该捆绑包必须手动启动(或通过侦听 捆绑软件/子系统部署事件,然后触发相关捆绑软件。是 这是设计使然,还是可以将此功能添加到复合子系统中 部署,也解决子系统内的依赖关系 并自动触发或通过配置触发。

Bundle Manifest: 

Manifest-Version: 1.0 
Bnd-LastModified: 1547100076404 
Bundle-Activator: msgdispconsumer.ConsumeActivator 
Bundle-ManifestVersion: 2 
Bundle-Name: msgdispconsumer 
Bundle-SymbolicName: msgdispconsumer 
Bundle-Version: 1.0.0.201901100601 
Created-By: 1.8.0_191 (Oracle Corporation) 
*Require-Capability: org.messagedisplaysvc, 
osgi.ee;filter:="(&(osgi.ee=JavaSE) 
 (version=1.8))"* 
Import-Package: org.osgi.framework;version="[1.5,2)" 
Private-Package: msgdispconsumer 
Tool: Bnd-4.1.0.201810181252 


Subsystem Manifest: 

Manifest-Version: 1.0 
Subsystem-SymbolicName: messagedisplaysvc 
Subsystem-Version: 1.0.0 
provision-policy: acceptDependencies 
Subsystem-Type: osgi.subsystem.composite 
Bundle-Name: Message Display Service 
*Provide-Capability: org.messagedisplaysvc* 
Import-Package: org.osgi.framework 

Bundle contained within Subsystem Manifest which is providing the capability 

Manifest-Version: 1.0 
Bnd-LastModified: 1546341320121 
Bundle-Activator: messagedisplaysvc.MsgActivator 
Bundle-ManifestVersion: 2 
Bundle-Name: messagedisplaysvc 
Bundle-SymbolicName: messagedisplaysvc 
Bundle-Version: 0.0.0.201901011115 
Created-By: 1.8.0_191 (Oracle Corporation) 
Import-Package: org.osgi.framework;version="[1.5,2)" 
Private-Package: messagedisplaysvc 
*Provide-Capability: org.messagedisplaysvc* 
Tool: Bnd-4.1.0.201810181252 

如何使这些依赖关系自动关联并在部署时处于活动状态 不论部署顺序如何。

示例:系统维护活动,其中所有子系统和捆绑软件均位于 复制到备份,然后在相同或另一个节点上重新部署,以防 在提供功能子系统之前部署捆绑软件,捆绑软件将 不热/自动部署到活动状态。

谢谢!

0 个答案:

没有答案
相关问题