我有两个OSGI包(基础,依赖),依赖包访问基本包的一些API . 当我取消部署基础包并重新部署它时,我得到了 "Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.module.spec.service."deployment.base-1.0.jar".main is already registered" ,但是基础包的取消部署成功了 .
我想了解当有几个依赖于它的bundle时osgi bundle的取消部署是如何工作的 .
Base Bundle Manifest
清单 - 版本:1.0
Bundle-Activator:com.learning.base.BaseBundleActivator
捆绑类别:osgi
Bundle-ManifestVersion:2
捆绑名称:基础
Bundle-SymbolicName:OSGI.base
捆绑版本:1.0.0
创建者:Apache Maven Bundle插件
Export-Package:org.osgi.framework; version =“1.7”,com.learning.base.model; version =“1.0.0”,com.learning.base.service; version =“1.0.0”;使用: = “com.learning.base.model”
Import-Package:com.learning.base.model; version =“[1.0,2)”,com.learning.base.service; version =“[1.0,2)”,javax.security.auth.x500,org . osgi.framework;版本= “[1.7,2)”
要求能力:osgi.ee; filter:=“(&(osgi.ee = JavaSE)(version = 1.8))”
工具:Bnd-3.2.0.201605172007
Dependent Bundle Manifest
清单 - 版本:1.0
Bundle-Activator:com.learning.dependent.DependentBundleActivator
捆绑类别:osgi
捆绑名称:依赖
Bundle-SymbolicName:OSGI.dependent
捆绑版本:1.0.0
创建者:Apache Maven Bundle插件
Export-Package:com.learning.dependent.model; version =“1.0.0”; uses:=“com.learning.base.model”,com.learning.dependent.service; version =“1.0.0”; uses := “com.learning.dependent.model,org.osgi.framework”
Import-Package:org.osgi.framework; version =“[1.7,2)”,com.learning.base.model; version =“[1.0,2)”,com.learning.base.service; version =“[ 1.0,2)”
要求能力:osgi.ee; filter:=“(&(osgi.ee = JavaSE)(version = 1.8))”
工具:Bnd-3.2.0.201605172007