定制OSGi捆绑包

定制OSGi捆绑包,osgi,Osgi,定制交付给客户的OSGi捆绑包的最佳实践是什么? 捆绑包有一个包含50个API的服务,客户希望扩展或继承单个API。客户是否必须创建新的捆绑包,或者是否可以修改现有捆绑包? 我希望客户不必修改基本捆绑包,他们的方法是简单地用定制捆绑包替换基本捆绑包吗?此外,该过程将如何实现自动化,每次我发布一个基本包时,客户将提取包内容,使用定制版本的类重新打包此基本内容,并使用适当的spring配置,然后使用不同的名称或版本号重新处理。然后在OSGi容器中用此自定义版本替换基本捆绑包。我假设基本捆绑包只导出接

定制交付给客户的OSGi捆绑包的最佳实践是什么? 捆绑包有一个包含50个API的服务,客户希望扩展或继承单个API。客户是否必须创建新的捆绑包,或者是否可以修改现有捆绑包?
我希望客户不必修改基本捆绑包,他们的方法是简单地用定制捆绑包替换基本捆绑包吗?此外,该过程将如何实现自动化,每次我发布一个基本包时,客户将提取包内容,使用定制版本的类重新打包此基本内容,并使用适当的spring配置,然后使用不同的名称或版本号重新处理。然后在OSGi容器中用此自定义版本替换基本捆绑包。我假设基本捆绑包只导出接口而不导出实现类,因此没有人可以直接继承实现类。

您的捆绑包在其导出的包中有一个公共契约。您的客户可以编写一个包来导入并使用您的包。客户还可以导出(他自己的)包,其中可以包含扩展(或委托)到您的类型的类型。然后,该导出包将成为客户的公共合同,供其客户(包括公司内部客户)使用


我认为您不想让客户修改您的捆绑包来定制它。

还值得添加:添加新捆绑包时,避免导出与原始捆绑包相同的包。这种关于哪个包是包的起源的模糊性被称为“拆分包”,它会导致各种不良行为。如果新包需要访问原始包,则可以将其声明为原始包的一个片段。然后,它将与原始类加载器共享一个类加载器。