control-m中 利用 bmc 公司提供的api 進行二次開發 介紹
API功能介紹
Control-M提供了使用者進行二次開發包,支援JAVA程式設計,使用者能根據自己需要通過API進行開發,該API只支援使用者編寫自己的Control-M/EM客戶端,編寫自己的介面給Control-M/EM服務端傳送各種請求。因為API只是與Control-M/EM結合使用的,所以必須要對Control-M/EM各種功能要熟悉。
API功能:
■ Log a user in or out of CONTROL-M/EM
■ Create jobs and Group Scheduling tables in the CONTROL-M Active Jobs file
■ Order and force jobs
■ Order and force Scheduling Groups
■ Track job execution
■ Add or delete Conditions
■ Manipulate Alerts
新版本新增功能:
■ Check the validity of user tokens
■ Create Job and Scheduling Group Definitions
■ Delete Job Definitions
■ Upload Scheduling Tables
■ Retrieve Jobs from CONTROL-M Active Jobs File
■ Perform Job Actions such as Hold, Free Rerun, Confirm, Kill and Force OK
初始化服務和連線服務:CONTROL-M/EM GUI Server和 the Global Alerts Server.
初始化例項 :
1.EMXMLInvoker:在control-m api 中傳送接收xml請求,其中涉及到初始化,呼叫,方法設定和取得等方法呼叫。
2.EMBasicXMLInvoker:在請求返回之前,不進行任何操作。
開始實踐
每個請求人都有一個令牌,在執行操作之前必須要進行註冊。使用者在提交了使用者名稱稱和密碼成功之後,在session中,就有了該使用者的令牌。使用者退出的時候令牌釋放,Session 舉例如下:
程式流程:
1.使用者登入具有Control-M api
2.啟動api程式,初始化例如EMXMLInvoker中的內容;
3.連線EM,發出登入請求,使用者提出使用者名稱和密碼;
4.EM返回訊息 包含使用者唯一的令牌,失敗的話,返回錯誤列表;
5.客戶端,建立一個請求,建立個工作發出請求,同時api翻譯具體請求;
6.EM返回來的成功與失敗的訊息;
7.客戶端i處理返回的資訊,通知使用者;
8.建立下一個工作。重複2到4;
9.退出EM,使用者提出沒有出冊的請求;
10.EM 返回錯誤資訊;
11.停止呼叫api。
執行要求:
1.CONTROL-M/EM is installed on your network.
2.—Java Developer's Kit (JDK) version 1.4.x or later
—Java Runtime Environment (JRE) version 1.4.x or later
配置:
emapi-configure.bat
emapi_env.bat
ctmemapi.properties
emapi-admin.bat
NamingViewer.vbs
changePass.bat
Java程式碼:
import com.bmc.ctmem.emapi.*;//匯入包
public class EMAPISample {
public EMAPISample() {
}
/** run once before submitting requests */
public void do_init(String[] args) {
EMXMLInvoker.init(args);//初始化
}
/** run once before exiting the program */
public void do_terminate() {
EMXMLInvoker.done();
}
/** This submits the XMLRequest received as a parameter
* and returns the response */
public String submit_request(String XMLRequest) {
String XMLResponse="";
// Creates a component
ComponentType gsr_comp = new GSRComponent();//建立連線
// Creates a new EMXMLInvoker instance建立EMXMLInvoker 例項
EMXMLInvoker my_invoker = new EMXMLInvoker(gsr_comp);
try {
// Submits the request given as a parameter
XMLResponse = my_invoker.invoke(XMLRequest);
}
catch(InvokeException i) {
// must handle InvokeException
}
return XMLResponse;
}
}
編譯執行:
1.設定環境,執行emapi_env.bat
2.配置java環境
set JAVA_HOME=java_installation_location
set PATH=java_installation_location;%PATH%
3.,emapi-630/ctmemapi.properties 到工程目錄中
4,設定corba引數
java.exe -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -classpath
%CLASSPATH% projectMainClass
關於api 之間的request和reponse通訊到底如何進行的呢?
具體還要學習一下 soap 協議,SOAP意思是簡單物件訪問協議(Simple Object Access Protocol)。的確如它的名字一樣,SOAP是很簡單的。它是一個基於XML的協議,允許程式元件和應用程式彼此使用一種標準的Internet協議--HTTP來通訊。SOAP是一種獨立的平臺,它不依賴程式語言,它是簡單的,彈性的,很容易擴充套件的。目前,應用程式能夠彼此使用一種基於DCOM和CORBA技術的遠端過程呼叫(RPC)來進行相互通訊,但HTTP不被設計為這個目的。RPC在Internet上應用是非常困難的,它們會出現許多相容性和安全性的問題,因為防火牆和代理伺服器通常都會阻斷(block)這些型別的流量。應用程式之間最好的通訊方式是通過HTTP協議,因為HTTP是支援所有Internet瀏覽器和伺服器的。基於這個目的,SOAP協議被創建出來。
關於後續內容。在續。。。。。