是否需要导出包含OSGI服务的包才能发布到服务注册表?或者发布到服务注册表是否需要导出包?已发布的OSGI服务是否需要导出其包?
1
A
回答
3
简答题;第一个问题=否,第二个问题=否,没有“解决方法”
“合同设计”原则发挥作用。基本上我们提供了一个消费者依赖和提供者实现的接口 - 这将我们的消费者代码分解为我们实现者的实现细节。请参阅http://www.osgi.org/blog/2011/08/package-as-contract.html以获得良好的概述,并参阅http://en.wikipedia.org/wiki/Design_by_contract。
考虑到我们希望使用的接口(API)和实现(API接口的具体实现)以及消费者(希望使用接口实现的代码),对于OSGi,您有许多选项。
- 一个包可以同时提供接口和实现,但如果此服务被捆绑本身
- 具有接口(其中出口)一个独立的包和其他的外部使用,必须导出界面(s) - 实现bundle必须导入接口的包,但不需要显示他们自己的实现。
号2的优点包括允许多个提供商(OSGi的使用可被用来指定在注册的服务的属性的元数据匹配的LDAP过滤器),并利用OSGi的的动态结合性质(即可以改变实施运行时提供者)。
需要注意的一点是,使用者和提供者必须使用与包版本和导出包所定义的相同的类(换句话说,加载API类的包类加载器对于消费者而言必须是相同的和提供者)。
1
服务的类型应该在导出的包中。服务是键入的,并建立在模块层的类型共享上。所以你需要确保服务的提供者和服务的使用者都可以共享相同的类型。所以一些bundle必须导出包含该类型的包,以便提供者和消费者可以导入该包。这允许框架验证服务的类型安全性。
相关问题
- 1. OSGi片段包是否可以发布声明式服务?
- 2. 是否服务包需要在升级
- 3. SOAP Web服务:您是否需要WSDL发布页面?
- 4. 使TFS包含发布版本中的已发布WCF服务
- 5. 是否需要绑定到已启动的本地服务?
- 6. 将sqljdbc4导出为OSGi服务
- 7. 将Spring组件导出为OSGi服务
- 8. 您是否需要发布@property?
- 9. 我是否需要发布xib资源?
- 10. 找到导出包的OSGI包?
- 11. OSGi服务包装罐
- 12. ajax是否需要Web服务?
- 13. React.js是否需要服务器端?
- 14. Web服务是否需要注册?
- 15. JSONP是否需要修改服务器?
- 16. Apache Cordova是否需要服务器?
- 17. Kinect SDK是否已发布?
- 18. 是否需要禁用日志输出发布构建
- 19. Blueprint服务是否作为OSGI捆绑服务实现?
- 20. 您是否需要发布不是IBOutlets的xib UI元素?
- 21. 使用OSGi中的Endpoint.publish()发布Web服务?
- 22. 测试发布数据到需要认证的Web服务器
- 23. 发布eclipse创建的Web服务需要哪些文件?
- 24. 服务器是否需要为服务器编译可执行文件所需的软件包?
- 25. Google Play服务已过期。需要9877000但发现9875470
- 26. Google Play服务已过期。需要10084000,但发现8118436
- 27. 包含对实现代码的引用的OSGi导出API是否安全?
- 28. 分布式OSGi - 使用服务
- 29. 需要将文件发送到.NET WCF Web服务的指导
- 30. 需要的脚本文件导出到远程服务器