package monitor; /* import com.crystaldecisions.enterprise.ocaframework.ServiceNames; import com.crystaldecisions.sdk.occa.enadmin.*; import com.crystaldecisions.sdk.occa.pluginmgr.*; import com.crystaldecisions.sdk.plugin.admin.cmsadmin.*; import com.crystaldecisions.sdk.plugin.admin.eventserveradmin.*; import com.crystaldecisions.sdk.plugin.admin.fileserveradmin.*; import com.crystaldecisions.sdk.plugin.admin.jobserveradmin.*; import com.crystaldecisions.sdk.plugin.desktop.user.*; import com.crystaldecisions.sdk.properties.*; import com.crystaldecisions.sdk.plugin.CeProgID; */ import com.crystaldecisions.sdk.exception.SDKException; import com.crystaldecisions.sdk.occa.infostore.*; import com.crystaldecisions.sdk.plugin.desktop.server.*; import com.crystaldecisions.sdk.framework.CrystalEnterprise; import com.crystaldecisions.sdk.framework.IEnterpriseSession; import com.crystaldecisions.sdk.framework.ISessionMgr; import com.crystaldecisions.sdk.occa.infostore.IInfoStore; import com.crystaldecisions.sdk.occa.managedreports.*; import com.crystaldecisions.sdk.occa.security.ILogonTokenMgr; //import java.io.*; import java.util.*; /** * * @author jye */ public class Main { /** * @param args the command line arguments */ IEnterpriseSession enterpriseSession; IInfoStore iStore; IReportSourceFactory reportSourceFactory; ILogonTokenMgr logonTokenMgr; boolean warning = false; public void SetWarning() { warning = true; } public void Logoff() { enterpriseSession.logoff(); enterpriseSession = null; } public boolean Logon(String cms,String username,String password,String auth) { enterpriseSession = null; Exception failure = null; boolean loggedIn = true; if (enterpriseSession == null) { try { ISessionMgr sm = CrystalEnterprise.getSessionMgr(); enterpriseSession = sm.logon(username, password, cms, auth); } catch (Exception error) { loggedIn = false; failure = error; } if (!loggedIn) { System.out.println("failed"); System.out.println(failure); return false; } else { try{ // Create the IInfoStore object. iStore = (IInfoStore) enterpriseSession.getService("InfoStore"); // Create the IReportSourceFactory object. reportSourceFactory = (IReportSourceFactory) enterpriseSession.getService("PSReportFactory"); // Retrieve the logon token manager. logonTokenMgr = enterpriseSession.getLogonTokenMgr(); return true; } catch (Exception error) { loggedIn = false; failure = error; } } } return false; } public void GetServerInfo() { Date now = new Date(); String timenow =now.toString(); //System.out.println ("Time,Server Status,Alive,ExpectedState,State"); try{ IInfoObjects servers = iStore.query("Select SI_ID, SI_FRIENDLY_NAME From CI_SYSTEMOBJECTS Where SI_PROGID='CrystalEnterprise.Server'"); for (int i = 0; i < servers.size(); i++) { IInfoObject server = (IInfoObject) servers.get(i); IInfoObjects rServer1 = iStore.query("SELECT SI_NAME, SI_SERVER_IS_ALIVE, " + "SI_DISABLED, SI_SERVER_KIND, SI_FRIENDLY_NAME, SI_EXPECTED_RUN_STATE,SI_EXPECTED_RUN_STATE_TS, SI_STATUSINFO, SI_PID " + "FROM CI_SYSTEMOBJECTS WHERE SI_ID=" + server.getID()); IServer iServer1 = (IServer) rServer1.get(0); if(!warning) { System.out.print(timenow+","); System.out.print(iServer1.getFriendlyName()+","); System.out.print(iServer1.isAlive()+","); System.out.print(iServer1.getExpectedRunState()+","); System.out.print(iServer1.getExpectedRunStateTimeStamp()+","); System.out.print(iServer1.getState()+","); System.out.print(iServer1.getPID()+","); switch(iServer1.getStatusInfo().getStatus()) { case IStatusInfo.Status.STOPPED: System.out.print("STOPPED"); break; case IStatusInfo.Status.STARTING: System.out.print("STARTING"); break; case IStatusInfo.Status.INITIALIZING: System.out.print("INITIALIZING"); break; case IStatusInfo.Status.RUNNING: System.out.print("RUNNING"); break; case IStatusInfo.Status.STOPPING: System.out.print("STOPPING"); break; case IStatusInfo.Status.FAILED: System.out.print("FAILED"); break; } System.out.print(","); } if(iServer1.getExpectedRunState().toInteger()!=iServer1.getState().toInteger()) { if(warning) { System.out.print(timenow+","); System.out.print(iServer1.getFriendlyName()+","); } System.out.print("Current state is differ from expected state "); if(now.compareTo(iServer1.getExpectedRunStateTimeStamp())>0) { System.out.print("Exceeded expect state time "); System.out.print("Stopping Server "); StopServer(iServer1,rServer1); System.out.print("Starting Server "); StartServer(iServer1,rServer1); } else{ System.out.println("Not Exceeded expect state time, let us wait"); } System.out.println(); } if(!warning) { System.out.println(); } //System.out.println(iServer1.getState().toString()); /* System.out.println ("Server Status: " + iServer1.getFriendlyName()); System.out.println ("Alive: " + iServer1.isAlive()); System.out.println ("ExpectedState: " + iServer1.getExpectedRunState()); System.out.println ("State: " + iServer1.getState()); */ //StopServer(iServer1,rServer1); //StartServer(iServer1,rServer1); // } }catch (Exception e){ System.out.println (" GENERIC EXCEPTION " +e.getMessage()); } } public void StopServer(IServer iServer1,IInfoObjects rServer1) { try { iServer1.setExpectedRunState(ExpectedRunState.STOPNOW); iStore.commit(rServer1); } catch (SDKException e) { System.out.println("Unable to restart the server. Exception caught: " + e.getMessage()); } } public void StartServer(IServer iServer1,IInfoObjects rServer1) { try { iServer1.setExpectedRunState(ExpectedRunState.RUNNING); iStore.commit(rServer1); } catch (SDKException e) { System.out.println("Unable to restart the server. Exception caught: " + e.getMessage()); } } public static void main(String[] args) { Main monitor = new Main(); String cms=""; String username=""; String password=""; String auth=""; if(args.length>0) cms = args[0]; if(args.length>1) username = args[1]; if(args.length>2) password = args[2]; if(args.length>3) auth = args[3]; if(args.length>1) if(args[1].toUpperCase().equals("WARNING")) { monitor.SetWarning(); } if(monitor.Logon(cms,username,password,auth)){ monitor.GetServerInfo(); monitor.Logoff(); } else { System.out.println("Failed to logon"); } } }