问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么关闭Tomcat开机自动启动的功能

发布网友 发布时间:2022-04-22 04:31

我来回答

2个回答

懂视网 时间:2022-04-27 19:58

一、场景
近日有个项目客户要求能自己配置相关权限。由于历史原因这个项目采用的是公司以前的权限系统。这个权限系统很强大,不过有个弊端,就是每增加一个权限菜单都要重启才能生效,不然就要等1天它缓存过期后才生效。由于项目进度我们不可能将这个权限系统推翻重来。
  可行的方式是在管理员操作界面上增加权限系统重启按钮。这样客户在修改权限后可以很方便的重启Tomcat。
二、技术分析
由于管理员系统是基于.net的BS方式。所以我们要能通过网页控制Tomcat的关闭启动,并加载进管理员系统中。
  首先分析Tomcat的启动方式。在Tomcat6.0的bin目录下有两个批处理文件。startup.bat和shutdown.bat分别控制着Tomcat的启动和关闭。我们要控制Tomcat的启动关闭就得调用这两个批处理文件。
怎么调呢?在哪调呢?浏览器直接调那是不可能的。必须得在web服务器上部署个web页面,在服务端调用这两个命令。如果部署在权限系统内部那是最好的,不过这会产生一个问题,我们可以关闭Tomcat,但却无法启动。最终的方案是在同一台机子上部署个.net实现的webservice,通过这个webservice实现权限系统的启动和关闭。
三、具体实现
  在VS2008中创建一个web service项目。
  创建两个WebMethod。
  1.启动Tomcat方法
代码如下:

/// <summary>
/// 启动权限系统
/// </summary>
/// <returns>true:成功;false:失败</returns>
[WebMethod]
public bool StartPM()
{
try
{
// 创建进程启动信息
ProcessStartInfo sinfo = new ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory + "start.bat");
// 获取系统环境变量
IDictionary dics = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine);
foreach (string key in dics.Keys)
{// 将系统环境变量加入新进程环境变量中
if (sinfo.EnvironmentVariables.ContainsKey(key)) continue;
sinfo.EnvironmentVariables.Add(key, dics[key].ToString());
}
// 不需要从系统外壳程序创建,直接从文件创建
sinfo.UseShellExecute = false;
Process.Start(sinfo);
}
catch (Exception ex)
{
//TODO: 写日志
return false;
}
return true;
}

.关闭Tomcat方法
代码如下:

/// <summary>
/// 关闭权限系统
/// </summary>
/// <returns>true:成功;false:失败</returns>
[WebMethod]
public bool StopPM()
{
try
{
// 创建进程启动信息
ProcessStartInfo sinfo = new ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory + "stop.bat");
// 获取系统环境变量
IDictionary dics = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine);
foreach (string key in dics.Keys)
{// 将系统环境变量加入新进程环境变量中
if (sinfo.EnvironmentVariables.ContainsKey(key)) continue;
sinfo.EnvironmentVariables.Add(key, dics[key].ToString());
}
// 不需要从系统外壳程序创建,直接从文件创建
sinfo.UseShellExecute = false;
Process.Start(sinfo);
}
catch (Exception ex)
{
//TODO: 写日志
return false;
}
return true;
}

为了方便以后配置我有新建了两个bat文件。在这两个文件中分别做调用Tomcat的startup.bat和shutdown.bat的操作。具体如下:
  1.start.bat  
代码如下:
K:apache-tomcat-6.0.30instartup.bat 
  2.stop.bat
代码如下:K:apache-tomcat-6.0.30inshutdown.bat
四、总结
  整个开发过程中出现了无法找到CATALINA_HOME、JAVA_HOME环境变量的错误,那是因为父进程也就是web service的环境变量中并没有这两项,所以创建子进程时(子进程的环境变量继承于父进程)也没有这两项。只得从系统环境变量中获取环境变量重新添加进新启动的进程中。同时必须明确的是进程的工作目录不等于进程的启动目录。比如
代码如下:ProcessStartInfo sinfo = new ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory + "stop.bat");
如果去掉AppDomain.CurrentDomain.BaseDirectory将报无法找到stop.bat 的错误,就是因为工作目录和启动目录不一致导致。

热心网友 时间:2022-04-27 17:06


    右击逗我的电脑地,选择逗管理地这个选项,等一会儿会打开一个文本框。

    选择逗服务和应用程序地,选择逗服务地,等一会儿右边会出现很多程序,找到逗Tomcat地将启动改为手动,关机重启之后就可以了。

    也可以用这个方法:按开始---运行,在运行框输入misconfig----按回车,会弹出逗系统配置地窗口。

    切换到逗启动地,在这里可以看到哪些文件是你开机就会自动启动的,将不需要自动启动的前面的打勾去掉。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样喷香水留香更持久?有哪些技巧? 有哪些方法让香水持久度更长一些? 怎样喷香水比较持久? 如何喷香水能使味道更持久? 败北是什么梗 湖南第一师范学院生活开销 赣州博沃新能源科技有限公司怎么样? 在湖南第一师范学院读书需要支出哪些费用 江西信丰恒隆麦饭石酒业有限公司公司荣誉 信丰县资源特点 如何解决tomcat启动闪退的问题 如何把游戏禁止不让玩? tomcat运行startup.bat运行就关闭了 注销qq钱包显示版本低怎么回事 tomcat启动后马上关闭,命令窗口一闪而过 为什么tomcat启动时一闪就关闭了 tomcat自动关闭,关闭的时间不定,没有规律,查看... 橙色配什么颜色比较好看? Tomcat服务器启动startup.bat后怎么自动关闭DOS窗口? tomcat 一打开就关闭 tomcat启动后一会就自动关闭,这是怎么回事 橙色配什么色好看 tomcat 突然开始自动停止运行。为什么,以前好好的。 橙色与什么颜色搭配 招商银行的小额贷款怎么贷? 橙色配什么颜色最好看 招商银行工资卡无抵押贷款额度怎么算 橙色配什么颜色好看 服装搭配 招商银行的工薪贷都需要什么 橙色和什么颜色最配? Tomcat玩坏了,无法启动,求助 tomcat 不能启动服务 怎样在自己电脑对一个游戏设置使别人玩不了 老虎的特征和生活特点是什么? 怎样才能让自己的电脑不能玩网络游戏啊 急!!! 车载投影仪是什么东西。多少钱 投影仪作为家庭影院跟电视有什么区别? 智能投影仪,可以替代家庭影院吗? 如何让电脑玩不了游戏? 家庭影院用哪种投影仪比较好? 怎么通过电脑的设置让一个网络游戏玩不了 投影仪作为家庭影院,买哪一种好?有没有好的推荐? 如何让电脑不能打游戏 弄私人家庭影院有哪些好用的投影仪推荐? 怎么让手机玩不了游戏 投影仪家庭影院的布置 怎么样才能让自己的电脑玩不了游戏 怎么选家庭影院投影仪? 怎么能让电脑什么游戏都玩不了 怎么才能让自己的QQ玩不了腾讯游戏