CollCront.java 2.93 KB
package com.sitech.ismp.check;

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.LineNumberReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Vector;
import org.apache.log4j.Logger;

public class CollCront implements CollCrontMBean {

	/*
	 * 启动SHELL脚本
	 * 
	 * @param params
	 * 
	 * @return
	 */

    private static Logger logger = Logger.getLogger("CollCront");

    public CollCront() {

    }

    public Vector doCrontab(HashMap params) {

        String lin = "";
        String shellway = "";
        Process process = null;

        shellway = params.get("SHELLWAY").toString().trim();
        logger.info("doCrontab :" + shellway);

        Runtime sys = Runtime.getRuntime();

        try {
            process = sys.exec(shellway);

            /** 20090413(huangkai) NEW **/
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));
            String sb = "";

            while ((lin = bufferedReader.readLine()) != null) {
                sb += lin + "\n";
            }
            logger.debug("[\n" + shellway + "]<" + sb + ">");

            int err = process.waitFor();

            if (err == 1) { // 有异常
                InputStreamReader ir = new InputStreamReader(process
                        .getErrorStream());
                LineNumberReader input = new LineNumberReader(ir);

                sb = "";
                while ((lin = input.readLine()) != null) {
                    sb += lin + "\n";
                }
                logger.error("[" + shellway + "] Error<\n" + sb + ">");
                input.close();
            }

            /** 20090413(huangkai) OLD BEGIN **
             if(process.getErrorStream().read() != -1) {
             //process.destroy();
             logger.error("[" + shellway + "] Run Error!");
             }

             BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()));
             StringBuffer sb = new StringBuffer();

             while (  (str = bufferedReader.readLine()) != null) {
             logger.debug("[" + shellway + "]<" + str + ">");
             }
             int runResult=process.waitFor();
             if(runResult==0){
             logger.debug("[" + shellway + "]<+++++++++ normal termination ++++++++>");
             }else{
             logger.error("[" + shellway + "]<+++++++++ error termination ++++++++>");
             }
             ** 20090413 OLD END **/

        } catch (Exception e) {
            e.printStackTrace();
            logger.error("[" + shellway + "]Error!");
            logger.error(e);
        }

        return new Vector();
    }

    public static void main(String args[]) throws IOException {
        CollCront CollCront = new CollCront();
        HashMap params = new HashMap();

        params.put("SHELLWAY", args[0]);
        CollCront.doCrontab(params);
    }
}