gpt4 book ai didi

java - OSGi 服务类依赖关系

转载 作者:行者123 更新时间:2023-12-01 14:45:39 25 4
gpt4 key购买 nike

我想知道组织 bundle 的好方法是什么,以便可以在它们之间共享作为服务参数所需的类。

我有几个公开类类型的服务接口(interface),这些类类型需要在 Bundes 之间引用,例如:

public interface DoesThis {
public CustomClassB doSomething(CustomClassA customClassA);
}

根据我的理解,CustomClassA(如果在与公开服务相同的包中定义)将不可用于其他包,因此最好在包中的包之间公开类引用,然后导出了吗?

就像一个子问题:服务和包导出是否应该协同工作......从我正在阅读的文档中不清楚是否是这种情况?

谢谢

最佳答案

基本上是的。接口(interface)引用的所有类型都必须位于导出的包中。有几个选项:

  • 它们可以与接口(interface)位于同一个包中,在这种情况下,它们自然会与接口(interface)同时导出,因为在 OSGi 中我们总是导出/导入整个包。
  • 它们可以位于不同的包中,但由与服务接口(interface)相同的包导出。
  • 它们可能位于不同的包中并由不同的包导出。在这种情况下,服务接口(interface)包必须导入该包。

如果您考虑一下,不导出类型是没有意义的。例如,如果使用者无法创建要传入的 CustomClassA 类型的对象,或者无法理解返回类型 CustomClassB,那么它如何调用您的 doSomething 方法

关于您的子问题...是的,包导出的存在主要是为了支持服务注册表。只有当提供者和消费者能够就服务的“契约(Contract)”达成一致时,服务才能工作,这在 Java 术语中意味着他们加载相同的接口(interface)。

关于java - OSGi 服务类依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com