close

  Cisco的SCSM裡的SM(Subscriber Manager)提供兩類API:Blocking和Nonblocking,call Blocking的API等到它的return,表示它進行的交易全數完成才傳回,而且提一堆get開頭的查詢API。而涉及到Subscriber的增改刪,若使用Blocking API,通常要等SM內部commit完成才會把結果傳回,而Nonblocking API則可以把交易提出後,設置Listener等候SM傳回交易結果,這樣做的好處是系統可以往下處理不必枯等結果,是做Cisco都會建議使用Nonblocking API,而使用Blocking API則占了一個connection,所以萬一要使用Blocking API,Cisco也建議建置一個Pool來管理,避免connect又disconnect,甚至漏掉disconnect動作導致connection的浪費。

  以下是使用Blocking API查詢用戶是否存在的Sample,需include smapi.jar:

import com.pcube.management.api.SMBlockingApi;

public class CiscoSM {

    public static boolean subscriberExists(String subscriberId) {
        SMBlockingApi smapi = new SMBlockingApi();  // Cisco官方建議, SM Api需在finally裡disconnect, 不管先前有無connect
        boolean flag = false;
        try {
            smapi.setReplyTimeout(10000);
            smapi.connect("127.0.0.1");
            flag = smapi.subscriberExists(subscriberId);
            System.out.println(subscriberId + " exists ? " + flag);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            smapi.disconnect();
            return flag;
        }
    }

    public static void main(String[] args) throws Exception {
        subscriberExists("0123456789");
    }

}

P.S: smapi.jar尚會reference如後的jar檔: asn1rt.jar, jdmkrt.jar, log4j.jar, log4j.properties, xerces.jar, jce-jdk13-133.jar


  SM的Subscriber name命名規則是ASCII code 32~126可列印字元,除了34 ("), 39 ('), and 96 (`)外,最多64個字元。domain在SM裡是一個領域概念,每個Subscriber只屬一個domain,這domain由單一的SM對SCE做更好的網路流量配置。目前SM預設一個domain,叫做"subscribers"。

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()