簡體   English   中英

OSGi服務類依賴性

[英]OSGi service class dependencies

我想知道什么是組織捆綁軟件的好方法,以便可以在它們之間共享作為服務參數的類。

我有幾個服務接口,這些接口公開了在綁定之間需要引用的類類型,例如:

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

根據我的理解, CustomClassA (如果在與公開服務相同的捆綁軟件中定義)對其他捆綁軟件不可用,那么最好在打包的捆綁軟件中公開類別參考,然后將其導出嗎?

就像一個子問題:服務和程序包導出是否應該協同工作...從我正在閱讀的文檔中尚不清楚這種情況嗎?

謝謝

基本上是。 接口引用的所有類型必須在導出的包中。 有幾種選擇:

  • 它們可能與接口位於同一包中,在這種情況下,它們自然會與接口同時導出,因為在OSGi中,我們總是導出/導入整個包。
  • 它們可能位於不同的程序包中,但通過與服務接口相同的捆綁包導出。
  • 它們可以放在不同的包中,並通過不同的捆綁包導出。 在這種情況下,服務接口捆綁包必須導入該軟件包。

如果您考慮一下,則不導出類型是沒有意義的。 例如,如果使用者無法創建要傳入的CustomClassA類型的對象,或者無法理解返回的CustomClassB類型,該如何調用doSomething方法?

關於您的子問題...是的,程序包導出主要是為了支持服務注冊表。 僅當提供者和使用者可以就服務的“合同”達成協議時,服務才能工作,這在Java中表示它們加載了相同的接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM