我的问题描述
    web程序启动时,同时启动一个java的application程序,既打开一个dos窗口,运行这个application,想请给些提示和帮助

解决方案 »

  1.   

    你可以在Servlet的init() method中运行按如下动行:Process p = Runtime.getRuntime().exec(cmd);
    ProcessReader errorReader = new ProcessReader(p.getErrorStream());
        errorReader.addListener(_listener);
     ProcessReader inputReader = new ProcessReader(p.getInputStream());
        inputReader.addListener(_listener);    (new Thread(errorReader)).start();
        (new Thread(inputReader)).start();================
    public class ProcessReader implements Runnable {
      private BufferedReader _in = null;
      private ArrayList _listeners = new ArrayList();  /**
       * @param in
       * @emsp.excluded
       */
      public ProcessReader(InputStream in) {
        this(new InputStreamReader(in));
      }  /**
       * @param in
       * @emsp.excluded
       */
      public ProcessReader(Reader in) {
        _in = new BufferedReader(in);
      }  /**
       * @param listener
       * @emsp.excluded
       */
      void addListener(ReaderListener listener) {
        _listeners.add(listener);
      }  /**
       * @param listener
       * @emsp.excluded
       */
      void removeListener(ReaderListener listener) {
        _listeners.remove(listener);
      }  private void fireLineRead(String line) {
        Iterator i = _listeners.iterator();
        while (i.hasNext()) {
          ((ReaderListener) i.next()).lineRead(this, line);
        }
      }  private void fireError(IOException ex) {
        Iterator i = _listeners.iterator();
        while (i.hasNext()) {
          ((ReaderListener) i.next()).error(this, ex);
        }
      }  private void fireEOF() {
        Iterator i = _listeners.iterator();
        while (i.hasNext()) {
          ((ReaderListener) i.next()).eof(this);
        }
      }  /**
       * Handles reading from stream until eof, notify registered listeners of
       * progress.
       */
      public void run() {
        try {
          String line = null;
          while (null != (line = _in.readLine())) {
            fireLineRead(line);
          }
        }
        catch (IOException ex) {
          fireError(ex);
        }
        finally {
          fireEOF();
        }
      }
    }
    ==========================
    public interface ReaderListener {
      /**
       * Invoked after each new line is read from stream
       * 
       * @param reader where line was read from
       * @param line line read
       */
      void lineRead(ProcessReader reader, String line);  /**
       * Invoked if an I/O error occurs during reading
       * 
       * @param reader where error occurred
       * @param ex exception that was thrown
       */
      void error(ProcessReader reader, IOException ex);  /**
       * Invoked after EOF is reached
       * 
       * @param reader where EOF has occurred
       */
      void eof(ProcessReader reader);
    }