DBMNG数据库管理与应用

科学是实事求是的学问,来不得半点虚假。
当前位置:首页 > 服务器配置 > Tomcat

通过网页发送Tomcat重启命令的一个方法

这种方法首先要求自己能控制的一台Windows主机(其他主机暂不适用),而不是虚拟主机。

因为,首先需要在服务器上运行一个命令监控程序:

这里用delphi来开发的,以下是代码:
unit main;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls,IdSocketHandle,
  ExtCtrls;

type
  TForm1 = class(TForm)
    IdUDPServer1: TIdUDPServer;
    Memo1: TMemo;
    Button1: TButton;
    Timer1: TTimer;
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  timStrCnt:Integer;
implementation

{$R *.dfm}

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
cmd:String;
begin
AData.Seek(0,0);
   SetLength(cmd,AData.size);
   AData.Read(cmd[1],AData.Size);
   Memo1.Lines.Append(DateTimeToStr(Now)+' 收到命令:'+cmd);
   if(cmd='RESTARTTOMCAT620')then
   begin
   Timer1.Enabled:=true;    //激活计时控件开始计时
   Memo1.Lines.Append(DateTimeToStr(Now)+' 收到命令:'+cmd+' 开始关闭...');
   winexec(PAnsiChar('stopTomcat.bat'),sw_shownormal) ;
   Memo1.Lines.Append(DateTimeToStr(Now)+' 执行命令:关闭完成')
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   timStrCnt:=timStrCnt+1;// 每次计时次数+1
   if(timStrCnt=1) then //第一次不执行;等待15秒后执行
   begin
   Memo1.Lines.Append(DateTimeToStr(Now)+' 执行命令:重启开始...');
   winexec(PAnsiChar('startTomcat.bat'),sw_shownormal) ;
   Memo1.Lines.Append(DateTimeToStr(Now)+' 执行命令:重启完成') ;
   Memo1.Lines.Append('******************************************') ;
   timStrCnt:=-1 ;  //设置为初始计时次数-1
   Timer1.Enabled:=false    //暂停计时控件(改为锁定状态)
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timStrCnt:=-1;   //初始计时次数设置为-1
end;

end.

-------------------------------------------------------------------------------------------------------------

然后写两个执行操作“关闭”和“启动”Tomcat系统服务的bat批处理文件,分别为:

startTomcat.bat  (作用是启动对应系统服务)内容为:

net start "Apache Tomcat 6"(Tomcat的系统名称,有空格时注意加上英文字符的双引号)

stopTomcat.bat  (作用是关闭对应系统服务)内容为:

net stop "Apache Tomcat 6"(Tomcat的系统名称,有空格时注意加上英文字符的双引号)

 ---------------------------------------------------------------------------------------------------------------

然后是执行发送重启Tomcat命令的网页内容,这里采用UDP的方式发送数据:

 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,com.zytk.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>RestartServerEnd</title>
</head>
<body><%@include file="Function.jsp" %>
<%
String action="";
action=CStr(request.getParameter("action"));
if(action.equals("sendcmdlinerestart"))
{
 UDP udp=new UDP();
 udp.send("127.0.0.1",6801,"RESTARTTOMCAT620");
%>
<form action="" method="post" name="MngMembersForm">
<input name="action" type="hidden" value="sendcmdlinerestart"/>
<input type="submit" name="button" id="button" value="已发送重启Tomcat命令" disabled>
</form>
<%
out.print("<script>alert('重启命令已发送,请稍后浏览你更新的文件地址!');window.opener=null;window.close();</script>");
}
else
{
%>
<form action="" method="post" name="MngMembersForm">
<input name="action" type="hidden" value="sendcmdlinerestart"/>
<input type="submit" name="button" id="button" value="发送重启Tomcat命令">
</form>
<%}%>
</body>
</html>

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号