/** * This method finds out the next port on which OptimizeIt can send its profiler output. * * <p>If "watchdog.server.<SERVER_NAME>.profilers.OptimizeIt.port is specified then, the * property value is returned as an int. * * <p>If not the "watchdog.profilers.OptimizeIt.startPort" property is looked up to find out where * the port numbers start for all the servers (and incremented by one for each server) * * <p>If this property is unspecified too, then the default is OPTIMIZEIT_START_PORT. */ private static synchronized String getOptimizeItAuditPort(String serverPropertyPrefix) { String rc = DCPLib.getProperty(serverPropertyPrefix + ".profilers.OptimizeIt.port", null); if (rc != null) return rc; if (msOptimizeItStartPort < 0) { rc = DCPLib.getProperty("watchdog.java.profilers.OptimizeIt.startPort", null); if (rc == null) msOptimizeItStartPort = OPTIMIZEIT_START_PORT; else { try { msOptimizeItStartPort = Integer.parseInt(rc); } catch (NumberFormatException ex) { msOptimizeItStartPort = OPTIMIZEIT_START_PORT; } } } return Integer.toString(msOptimizeItStartPort++); }
/** Stop this server hard. Destroy the server process. */ protected void stopServerHard() { if (mProcess != null) { String propertyName = getPropertyPrefix() + ".shutdown.cmd"; String shutdownCmd = DCPLib.getProperty(propertyName, null); if (shutdownCmd != null) { mLogger.finer(propertyName + " " + shutdownCmd); ExecuteShutdownCmdThread script = new ExecuteShutdownCmdThread(shutdownCmd); script.start(); } mLogger.finer("Destroying server process using destory()"); mProcess.destroy(); mLogger.finer("Destroyed server process"); mProcess = null; mPid = 0; } }
/** * This method should update the ServerCommand "struct" and setup the necessary values for the * server to be executed under OptimizeIt. */ protected void updateServerCommandForOptimizeIt(ServerCommand serverCmd) { mLogger.config(mPropertyPrefix + " checking for optit"); String optitPrefix = WDConstants.WD_PREFIX + ".java.profilers.OptimizeIt."; String home = DCPLib.getProperty(optitPrefix + "home", null); if (home == null) { mLogger.warning("OptimizeItHome is not specified. Cannot start OptimizeIt"); return; } if (!(new java.io.File(home)).exists()) { mLogger.warning("OptimizeItHome : " + home + " does not exist." + " Cannot start OptimizeIt"); return; } String classPath = DCPLib.getProperty(optitPrefix + "addonClassPath", ""); classPath = WDUtil.sreplace(classPath, "OPTIMIZEIT_HOME", home); serverCmd.setClasspath(serverCmd.getClasspath() + File.pathSeparator + classPath); String libPath = DCPLib.getProperty(optitPrefix + "addonLibPath", ""); libPath = WDUtil.sreplace(libPath, "OPTIMIZEIT_HOME", home); String sysLibPath = serverCmd.getLibPath(); if (sysLibPath == null) sysLibPath = System.getProperty("java.library.path", ""); serverCmd.setLibPath(libPath + File.pathSeparator + sysLibPath); String javaArgs = DCPLib.getProperty(optitPrefix + "javaArgs", ""); javaArgs = WDUtil.sreplace(javaArgs, "OPTIMIZEIT_HOME", home); List jvmFlags = serverCmd.getJVMFlags(); jvmFlags.add(0, javaArgs); String profilerClass = DCPLib.getProperty(optitPrefix + "class", "intuitive.audit.Audit"); if (mOptitAuditPort == null) { mOptitAuditPort = getOptimizeItAuditPort(mPropertyPrefix); } System.out.println("OptimizeIt for " + mName + " is running at " + mOptitAuditPort); mLogger.config("OptimizeIt running at " + mOptitAuditPort); String optitArgs = DCPLib.getProperty(optitPrefix + "args", ""); optitArgs = WDUtil.sreplace(optitArgs, "OPTIMIZEIT_HOME", home); optitArgs = WDUtil.sreplace(optitArgs, "AUDIT_PORT", mOptitAuditPort); String mainClass = serverCmd.getMainClassName(); List appArgs = serverCmd.getAppArgs(); serverCmd.setMainClassName(profilerClass); appArgs.add(0, mainClass); appArgs.add(0, optitArgs); }
/** * This method finds out the next port on which Java debuggere can send its debug output. * * <p>If "watchdog.server.<SERVER_NAME>.profilers.OptimizeIt.port is specified then, the * property value is returned as an int. * * <p>If not the "watchdog.java.profilers.OptimizeIt.startPort" property is looked up to find out * where the port numbers start for all the servers (and incremented by one for each server) * * <p>If this property is unspecified too, then the default is OPTIMIZEIT_START_PORT. */ private static synchronized String getJDBPort(String serverPropertyPrefix) { String rc = DCPLib.getProperty(serverPropertyPrefix + ".java.debug.port", null); if (rc != null) return rc; return Integer.toString(msJDBPort++); }