Tomcat 5.5 startup shutdown jmx问题

我想从java启动tomcat5.5,代码如下:

Runtime.getRuntime().exec(new String[] { "D:/Program Files/Apache Software Foundation/Tomcat 5.5/bin/startup.bat" },
					null, new File("D:/Program Files/Apache Software Foundation/Tomcat 5.5"));
老是启动不了,后来发现要这样:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pid.getInputStream()), 1024);


			String line = null;

			int i = 0;
			while (bufferedReader != null && (line = bufferedReader.readLine()) != null)
			{
				System.out.println(line);
			}

就是要把输出读出来才行。这样导致这个调用线程还不能马上关掉,关掉了那么Runtime.getRuntime().exec开启的子线程也会关掉导致调用取消。

我使用命令行启动tomcat,再在java里面调用Runtime.getRuntime().exec来执行shutdown.bat脚本,发现关闭不了。然后使用命令行关闭,仍然关闭不了,报错:

java.net.BindException: Address already in use: JVM_Bind

平时都是关闭控制台就关闭了,这次竟然出现这种问题。网上一搜,原来是启用了jmx,而tomcat5.5脚本里面又有bug:https://issues.apache.org/bugzilla/show_bug.cgi?id=36976 两方面的因素造成的。

 

通过远程访问Tomcat的正确配置是:

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10019 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.xx.xx" 
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.logCalls=true"

-Djava.rmi.server.hostname这个配置是一定要的,文档上可是没写。不然你本地可以连,远程就访问不了!

在linux下执行需要:

["/bin/sh","-c","sh xxx …"]


Total views.

© 2013 - 2018. All rights reserved.

Powered by Hydejack v6.6.1