在生产环境中碰到一种怪异的问题,在停止tomcat时,运行shutdown.sh,看起来好像停掉了,但是后面还有程序在运行,网上查了下资料‘shutdown.sh后存在tomcat僵尸进程的原因是shutdown.sh后web应用没有去关闭其启用的后台线程,所以处理的办法是监听到tomcat关闭事件时,关闭掉其启用的后台线程。’
这时刚好想起在我们应用中使用了定时任务等功能,但是在shutdown时并没有关闭该任务;
因为项目使用spring,它已经提供了destroy-method=“”的功能,于是我们在spring配置文件中在需要的bean中加上了该功能,在web.xml中定义:
com.util.CustomedContextLoaderListener
监听器类:
public class CustomedContextLoaderListener extends ContextLoaderListener {
public void contextInitialized(ServletContextEvent event) {
System.out.println("开始加载---");
super.contextInitialized(event);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
System.out.println("-------开始回收,这里就会调用bean里面定义了的destroy-close方法")
super.contextDestroyed(event);
}
}
这样在我们的定时任务bean中增加destroy-close方法,在里面shutdown掉定时任务;这样就可以通过tomact的shutdown.sh停掉服务了
转载
相关推荐
这些文件——`catalina.sh`、`setclasspath.sh`、`shutdown.sh`和`startup.sh`——对于TreeNMS的正常运行至关重要,因为它们涉及到Apache Tomcat服务器的启动、停止以及配置过程。 1. **catalina.sh**: 这是Apache ...
执行`sh shutdown.sh`会发送一个停止信号给Tomcat,使其优雅地关闭,释放资源,并结束进程。 6. **重启Tomcat**: 重启Tomcat的过程包括先关闭服务,然后重新启动。这可以通过连续运行`shutdown.sh`和`startup.sh`...
`shutdown.sh`脚本会优雅地关闭Tomcat服务,等待所有连接结束后再停止。 #### 三、杀死Tomcat进程 有时候,当Tomcat出现异常或者无法通过正常方式关闭时,可能需要强制终止(杀死)Tomcat进程。这通常可以通过...
有时,由于各种原因,如应用程序挂起、内存溢出或其他系统问题,普通的`shutdown.sh`命令可能无法正常关闭Tomcat,这时就需要使用强制关闭的脚本来结束Tomcat进程。 首先,让我们了解一下Tomcat的常规关闭流程。在...
- 若`shutdown.sh`无法正常停止服务,可以通过以下步骤手动终止: - 查找正在运行的Tomcat进程ID: ``` ps -ef | grep java ``` - 假设进程ID为`26027`,则可使用`kill`命令强制结束该进程: ``` kill -9 ...
发送一个特定的信号给Tomcat进程,让它优雅地关闭所有正在处理的请求并结束。 3. **自定义shell脚本**: `restart.sh`可能是一个用户自定义的脚本,它通常会结合`startup.sh`和`shutdown.sh`的功能,先执行停止...
6. **命令行接口(CLI)**:Tomcat提供了命令行工具,如`startup.sh`和`shutdown.sh`(在Unix/Linux系统中)或`startup.bat`和`shutdown.bat`(在Windows中),可以用于启动和停止服务。在C#程序中,可以使用`Process....
在某些情况下,如果Tomcat无法正常关闭,可能需要通过任务管理器手动结束进程。 10. **安全与优化** Tomcat的安全性和性能可以通过调整配置文件进行优化,例如限制并发连接数、启用SSL加密、设置连接器超时等。...
8. **关闭Tomcat**:执行`./shutdown.sh`停止Tomcat服务。 9. **查看状态**:使用`ps -ef | grep tomcat`检查Tomcat是否正在运行,或用`kill -9 pid`强制停止Tomcat进程,其中`pid`是Tomcat进程号。 最后,安装...
在命令行中,我们可以执行`./shutdown.sh`或者在脚本中使用`/path/to/tomcat/bin/shutdown.sh`。 此外,标签"源码"和"工具"提示了这篇博文可能也涉及了Tomcat的源代码分析或使用某些工具来辅助管理进程。可能讲解了...
在命令行中,使用`shutdown.sh`(Unix/Linux)或`shutdown.bat`(Windows)停止Tomcat,然后使用`startup.sh`或`startup.bat`启动Tomcat。 5. **防火墙设置**: 如果在远程服务器上操作,确保新配置的端口在防火墙...
有时候写Shell的脚本,用于顺序执行一系列的程序。 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间.../opt/tomcat/bin/shutdown.sh sleep 3 #等3秒后执行下一条 /opt
6. **Tomcat的启动与停止**:通过双击Tomcat安装目录下的`startup.bat`(Windows)或`startup.sh`(Linux/Mac)脚本来启动Tomcat,结束时则使用对应的`shutdown.bat`或`shutdown.sh`脚本。也可以通过管理工具(如`...
- `stop`:关闭Tomcat,执行 `$SHUTDOWN`,并查找所有相关的Tomcat进程,用 `kill -9` 命令结束它们。 - `restart`:先执行 `stop` 操作,等待5秒后再执行 `start` 操作,确保Tomcat完全关闭后再启动。 - `logs`:...
如果没有这个文件,你可能需要手动通过操作系统级别的命令来结束Tomcat进程,这可能不是最安全或最有效的方法。 最后,`startup.sh`是启动Tomcat服务器的脚本。当你准备好运行TreeNMS时,会调用这个脚本来启动服务...
在某些情况下,可能需要实时查看Tomcat的日志输出,以监控其运行状态或排查问题。这可以通过进入Tomcat的`logs`目录,并使用`tail -f catalina.out`命令来实现。 **命令步骤**: 1. **进入logs目录**: ``` cd ...
- **停止**:执行`sh shutdown.sh`或`./shutdown.sh`命令来停止Tomcat。 6. **日志跟踪**: - **查看日志**:进入`/app/tomcat/CucPayPerson/logs`目录,使用`tail -100f catalina.out`命令实时查看Tomcat的日志...
如果Tomcat无法启动,可能是由于8080端口已被其他进程占用。可以使用`ps -ef | grep java`找出占用该端口的进程,并通过`kill -9 <进程ID>`结束它。Tomcat的日志信息通常存储在`$CATALINA_HOME/logs/catalina.log`...
- 查找占用该端口的进程,并结束其运行。 - 修改`server.xml`中的端口号配置。 - **启动失败**:如果启动失败,可以检查日志文件`logs/catalina.out`来获取错误信息。 - **性能调优**:对于生产环境,建议根据实际...
然而,有时执行`shutdown.sh`后,Tomcat服务虽然无法被访问,但Java进程仍然存在,这可能是由于非守护线程导致的。 2. **处理僵尸进程** - 当Tomcat服务没有完全关闭,而Java进程仍然存活时,可以通过`ps -ef | ...