編寫服務來接收配置內容

配置內容可以透過啟動方法所提供的 org.osgi.service.component.ComponentContext 物件來取得。

開始之前

您必須完成將服務關聯於持續身分中所說明的作業。

關於這項作業

如果在啟動之後更新內容,所用的注入方法取決於服務在其「OSGi 宣告式服務 (DS)」宣告中所提供的環境定義。

一般而言,最好是在服務宣告上,利用 modified 屬性宣告一個專用來注入更新內容的方法。 如果 modified 方法不可用,DS 會停用服務,再利用新內容來重新啟動服務。

停用再啟動服務也可能導致回收相依服務,除非明確需要,否則必須避免。 如果要接收配置更新,偏好的方法是使用 modified 屬性。

範例

在前一個將服務關聯於持續身分作業中,您向 DS 定義了一項服務。 以下是該項作業中所說明的 DS 宣告其中的 activate 及 modified 方法範例。
private static Dictionary<String, Object> _props = null;

    protected void activate(ComponentContext cc) {
        _props = cc.getProperties();
    }

    protected void modified(Map<?, ?> newProperties) {
        if (newProperties instanceof Dictionary) {
            _props = (Dictionary<String, Object>) newProperties;
        } else {
            _props = new Hashtable(newProperties);
        }
    }
當您從配置內容取得值時,下列機制可提供一些彈性:
  • 將方法編寫成至少會預期相同軟體組所包含的預設內容,但為了容許進行使用者置換,使用者配置的移轉並非必要。
  • 忽略冗餘或無法辨識的內容。
服務必須能夠單獨操作預設配置。 為了提供合理的功能層次,使用者置換不能是必要的。

指示主題類型的圖示 作業主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_setup_service_getprops
檔名:twlp_setup_service_getprops.html