tomcat中的一个web程序启动时如何同时启动加载一个dos进程 我的问题描述 web程序启动时,同时启动一个java的application程序,既打开一个dos窗口,运行这个application,想请给些提示和帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以在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);} jsp动态跨行跨列问题~~ bean:write问题 showModelessDialog的status属性修改为什么不管用? Web工程问题,紧急求救 jsp新手,第一个问题? Cookie问题 报表的问题. ===页面跳转及防范的问题=== ML语言及 Moscow ML现在用得多不多? jsp中数据库的insert问题 onsubmit="submittomcat()" 什么时候调用? jdom读取xml文档的问题.繁体显示不了.请问如何解决/?
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);
}