如何从Java程序停止Apache2HTTP服务器?

如何从Java程序停止Apache2HTTP服务器?,java,apache2,Java,Apache2,我在Java程序中启动Apache HTTP服务器。不幸的是,我无法通过“httpd.exe-k stop”命令从程序中停止服务器。错误消息为“(OS 5)访问被拒绝:未能打开Apache2.2服务”。我的操作系统是Windows7。 如何从Java程序停止服务器?(手动停止服务器不是一个选项。) 更新:我无法更改Windows权限 看起来您需要以管理员身份运行程序。看看这个问题:看起来您需要以管理员身份运行程序。看看这个问题:也许可以编写一个CGI脚本,将其部署到Apache中,然后从Java

我在Java程序中启动Apache HTTP服务器。不幸的是,我无法通过“httpd.exe-k stop”命令从程序中停止服务器。错误消息为“(OS 5)访问被拒绝:未能打开Apache2.2服务”。我的操作系统是Windows7。 如何从Java程序停止服务器?(手动停止服务器不是一个选项。)


更新:我无法更改Windows权限

看起来您需要以管理员身份运行程序。看看这个问题:

看起来您需要以管理员身份运行程序。看看这个问题:

也许可以编写一个CGI脚本,将其部署到Apache中,然后从Java调用它

理论上,脚本将以与Apache本身相同的权限运行,并且可以包含停止服务器所需的代码(apachectl-k stop)


为了安全起见,CGI脚本只接受本地主机连接,并且需要密码。如果满足了所有要求,它将发出上述调用。

可以编写CGI脚本,将其部署到Apache中,然后从Java调用

理论上,脚本将以与Apache本身相同的权限运行,并且可以包含停止服务器所需的代码(apachectl-k stop)

为了安全起见,CGI脚本只接受本地主机连接,并且需要密码。如果满足了所有要求,它将发出上述调用。

一个肮脏但简单的java解决方案是调用:

Runtime.getRuntime().exec("taskkill /F /IM httpd.exe");
一个肮脏但简单的java解决方案是调用:

Runtime.getRuntime().exec("taskkill /F /IM httpd.exe");
1) 。开始 2). 在搜索框中键入“服务” 3). 单击“服务”,您将从列表中找到已安装的apache。 4). 选择apache,您将在屏幕左侧找到start/restart/stop选项,或者通过右键单击apache找到start/restart/stop选项。 5). 在此之后,这是不言自明的。 注1:如果启动/重新启动/停止等更改没有立即进行,您可能必须重新启动windows。 注2:-这是解决您问题的另一种解决方案。最好通过Apache应用程序本身重新启动。尽管如此,至少到目前为止,上述方法大多有效。

1)。开始 2). 在搜索框中键入“服务” 3). 单击“服务”,您将从列表中找到已安装的apache。 4). 选择apache,您将在屏幕左侧找到start/restart/stop选项,或者通过右键单击apache找到start/restart/stop选项。 5). 在此之后,这是不言自明的。 注1:如果启动/重新启动/停止等更改没有立即进行,您可能必须重新启动windows。
注2:-这是解决您问题的另一种解决方案。最好通过Apache应用程序本身重新启动。尽管如此,至少到目前为止,上述方法基本上是有效的。

听起来像是权限问题。听起来像是权限问题。不幸的是,这不是一个选项。我不能以管理员身份运行程序,也不能配置有关windows的任何内容。不幸的是,这不是一个选项。我无法以管理员身份运行程序,也无法配置与windows有关的任何内容。要杀死特定的httpd进程及其所有子进程,请调用
Runtime.getRuntime().exec(“taskkill/F/t/PID_-PIDNUMBER”)Thread.sleep(1000)来等待所有子进程真正终止。听起来很奇怪,但事实就是这样……试试看;)要杀死特定的httpd进程及其所有子进程,请调用
Runtime.getRuntime().exec(“taskkill/F/t/PID_-PIDNUMBER”)Thread.sleep(1000)来等待所有子进程真正终止。听起来很奇怪,但事实就是这样……试试看;)嗯,(s)他试图在他们的Java程序中这样做,所以你的答案不会真的有帮助。嗯,(s)他试图在他们的Java程序中这样做,所以你的答案不会真的有帮助。