IBM Java Toolbox for i對IBM i子系統的編程支援
除隊列之外,子系統也是IBM i的一大特色。為滿足使用者的各種需求,IBM i 支援多種類型的作業。不同種類的作業對系統資源的要求不同,比如,互動式作業要求較快的回應時間,批次工作可能要求較多的CPU時間等。為了更加合理、有效地使用系統資源,系統(System)被劃分成若干個子系統(Subsystem),所有的作業在子系統的監控下運行。因此,可以認為子系統是專門為了運行某一類作業而配置的環境。
從物件導向的編程模型角度,IBM Java Toolbox for i使用Subsystem類(位於com.ibm.as400.access包)描述IBM i子系統對象。
作為樣本,清單4描述的是子系統QHTTPSVR對應的屬性與功能,它服務於HTTP伺服器作業。
清單4. QHTTPSVR子系統
// 構造AS400對象,建立Java應用程式與IBM i伺服器的串連。
AS400 sys = new AS400(system, usr, pwd);
Subsystem sbs = new Subsystem(sys, "QHTTPSVR", "QHTTPSVR");
if (!sbs.exists()) {
System.out.println("No such subsystem: "+sbs.getPath());
}
else {
sbs.refresh();
System.out.println("Status: " + sbs.getStatus());
System.out.println("Number of jobs: " + sbs.getCurrentActiveJobs());
System.out.println("Maximum jobs: " + sbs.getMaximumActiveJobs());
// 等待1小時後停止子系統
sbs.end(3600);
}
// 作為好的編程習慣,釋放串連
sys.disconnectAllServices();
與作業相同,子系統本身並不是一個IBM i對象,但子系統描述(Subsystem Description)是一種對象(*SBSD)。子系統描述定義了子系統中擁有的儲存空間資源,在子系統中啟動並執行作業類型以及最大作業數等特徵。與作業不同,每一個子系統描述僅對應一個子系統,因此,可以用子系統描述對象的名字來區分不同的子系統。
從物件導向的編程模型角度,雖然IBM Java Toolbox for i並未提供專門的SubsystemDescription類來描述IBM i子系統描述符對象,而是在使用Subsystem類建立一個子系統的同時,代碼內部自動建立一個同名IBM i子系統描述對象。
作為樣本,清單5描述的是建立子系統MYSUBSYS,與此同時,IBM i會產生一個同名的及子系統描述對象。
清單5. 建立子系統以及子系統描述對象
// 構造AS400對象,建立Java應用程式與IBM i伺服器的串連。
AS400 sys = new AS400(system, usr, pwd);
// 建立子系統對象的同時,同名的子系統描述對象也被建立。
Subsystem sbs = new Subsystem(sys, "QSYS", "MYSUBSYS");
if (sbs.exists()) {
System.out.println("Subsystem Description: "+sbs.getPath() + " exists");
}
else {
sbs.create();
System.out.println("Subsystem Description: " + sbs.getPath());
System.out.println("Number of jobs: " + sbs.getCurrentActiveJobs());
System.out.println("Maximum jobs: " + sbs.getMaximumActiveJobs());
}
// 作為好的編程習慣,釋放串連
sys.disconnectAllServices();