在windows故障转移集群(failed over cluster)的实践过程中,需要将java web启动脚本添加至集群角色,但会报“无法创建通用脚本资源。 创建通用脚本资源时出错。”的错误。
对于MySQL服务的添加十分顺利,在集群转移的过程中也工作正常。故考虑将web启动脚本制作成服务的形式,在后台运行。
参考一些方法后,记录如下:
**工具:**vs2012
**语言:**c#
1. 新建Windows服务项目
2. 写服务内容
重写WindowsService1.Service1的OnStart和OnStop方法
protected override void OnStart(string[] args)
{
Process proc = null;
try
{
string startDir= string.Format(@"X:\startScriptDir\");
proc = new Process();
proc.StartInfo.WorkingDirectory = startDir;
proc.StartInfo.FileName = "startup.bat";
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
}
}
protected override void OnStop()
{
Process proc = null;
try
{
string stopDir= string.Format(@"X:\stopScriptDir\");
proc = new Process();
proc.StartInfo.WorkingDirectory = stopDir;
proc.StartInfo.FileName = "shutdown.bat";
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
}
}
3 配置服务安装信息
3.1 配置serviceInstaller1
安装扩展的类的 ServiceBase 来实现服务。 在安装服务应用程序时,将由安装实用工具调用此类。
3.2 配置serviceProcessInstaller1
安装包含扩展的类的可执行文件 ServiceBase。 在安装服务应用程序时,将由安装实用程序,例如 InstallUtil.exe,调用此类。
4. 编译生成Release
5. 准备安装
5.1 新建一个安装服务用的文件夹,如Release
5.2 从Release中拷贝WindowsService1.exe到Release
5.3 从C:\Windows\Microsoft.NET\Framework64\v4.0.30319\下拷贝InstallUtil.exe到Release
6. 安装服务
启动管理员cmd进入到Release,执行
InstallUtil.exe /i WindowsService1.exe(安装服务)
7 完成
可以通过启动和停止服务分别调用startup.bat和shutdown.bat。
服务制作失败需要重新制作的话,需要先将其卸载
InstallUtil.exe /u WindowsService1.exe(卸载服务)
服务是运行在后台的进程,不适用于需要界面显示的程序。