摘要: 问题:将多线程web服务部署于tomcat中,该web服务中的子线程一直在运行(或时不时被触发运行),关闭tomcat后,该web服务没有被同时关掉(windows系统中表现为tomcat.exe进程已经关闭,java.exe进程依旧存在,并且在 ...
问题:
将多线程web服务部署于tomcat中,该web服务中的子线程一直在运行(或时不时被触发运行),关闭tomcat后,该web服务没有被同时关掉(windows系统中表现为tomcat.exe进程已经关闭,java.exe进程依旧存在,并且在继续执行)
解决方法:
新建一个监听类,该类实现ServletContextListener接口中的contextInitiialized()方法和contextDestroyed()方法。然后在tomcat中注册该监听类,开启或关闭tomcat时,都将先执行该监听类
1、举例:新建监听类CgmIndexListener
package com.saas.cgm;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
//若使用ServletContextListener接口,可能需添加javax.servlet-5.1.12.jar或其它库
public class CgmIndexListener implements ServletContextListener{
private static ExecutorService exec = Executors.newCachedThreadPool();//线程池
//关闭tomcat前关闭线程
public void contextDestroyed(ServletContextEvent arg0) {
exec.shutdownNow();;
}
//开启tomcat前执行线程
public contextInitiialized(ServletContextEvent arg0) {
RamIndexWriter ramIndexWriter = new RamIndexWriter();//新建一个线程
exec.execute(ramIndexWriter);
}
2、注册该监听类:在tomcat安装目录下的conf文件夹内的web.xml文件中添加:
<listener>
<listener-class>com.saas.cgm.CgmIndexListener</listener-class>
</listener>
添加完如下所示:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<!--在此之后添加-->
<listener>
<listener-class>com.saas.cgm.CgmIndexListener</listener-class>
</listener>
3、此时,关闭tomcat时,tomcat首先关闭线程池exec中的ramIndexWriter 线程,当没有子线程在运行时,java.exe进程也就能被顺利关闭了
分享到:
相关推荐
在J2EE开发过程中经常由于内存溢出等多方面原因,导致tomcat服务器软件自动停止服务,从而影响了Web服务,本代码采用VB开发,主要是监控tomcat是否被关闭,保证tomcat的正常运行!
1. **多线程技术**:Java Web服务器通常采用多线程来处理并发的用户请求。在本项目中,每个HTTP请求都会在一个独立的线程中运行,确保服务器能同时服务于多个客户端,提高了系统响应速度和整体性能。 2. **静态网页...
- **死锁**:多线程应用程序中可能出现的死锁问题,也会使Tomcat服务陷入不可恢复的状态,最终导致服务自动关闭。 - **资源泄露**:如数据库连接、文件句柄等资源的不正确释放,随着时间推移,会逐渐消耗系统资源,...
此脚本会优雅地关闭Tomcat服务,等待所有线程处理完毕后才完全停止服务。 3. **检查Tomcat是否关闭**: 为了确认Tomcat是否已经成功关闭,可以使用`ps`命令查看是否有相关的Java进程还在运行。 ```bash ps -ef ...
在模拟Tomcat的过程中,了解并实现这些步骤可以帮助我们更好地理解Web服务器的工作流程,特别是Java的多线程模型在其中的应用。同时,标签"java tomcat"提示我们需要关注的是与Java和Tomcat相关的技术,例如Servlet...
4. **启动与停止**:通过`bin`目录下的`startup.bat`和`shutdown.bat`脚本启动或关闭Tomcat服务。 5. **配置webapps**:默认情况下,Tomcat会在`webapps`目录下寻找并部署Web应用。 **三、Tomcat 7.0的应用部署** ...
Tomcat是Apache软件基金会Jakarta项目中的核心部分,它是一款开源且免费的Servlet容器,广泛用于部署Java Web应用程序。Tomcat对于开发者和运维人员来说,是实现JSP、Servlet技术的重要工具,尤其在中小型系统中,因...
3. 启动与停止:通过`bin/startup.sh`(Unix/Linux)或`bin/startup.bat`(Windows)启动Tomcat,使用`shutdown.sh`或`shutdown.bat`关闭服务。 三、Tomcat目录结构 - `bin`:包含可执行脚本,用于启动、停止Tomcat...
- Tomcat利用关闭钩子来执行服务停止时的清理任务,如卸载Web应用程序、关闭网络连接、停止后台线程等。 - 在Tomcat的`Catalina`类中,我们可以找到对关闭钩子的注册和处理逻辑。 3. **第17章及后续章节概览**: ...
《Tomcat中Server.xml详解》 在Apache Tomcat服务器中,`server.xml`是一个至关重要的配置文件,它定义了服务器的基本结构和行为。这个文件位于Tomcat安装目录下的`conf`子目录中,是整个Tomcat配置的核心。本文将...
4. **启动与关闭**:通过执行`bin/startup.sh`(Unix/Linux)或`bin/startup.bat`(Windows)启动Tomcat,使用`shutdown.sh`或`shutdown.bat`停止服务。 **三、Tomcat的管理** 1. **管理界面**:默认情况下,...
7. **多线程与并发** - Tomcat使用线程池处理并发请求,可以通过`maxThreads`和`minSpareThreads`配置连接器来调整线程池大小。 8. **连接器与协议支持** - Coyote连接器支持HTTP/1.1协议,还可以通过AJP协议与...
【标题】:“Web服务器Tomcat” 【描述】:“Java Web服务器Tomcat5.0。” 【正文】: Tomcat,作为一款流行的开源Web服务器和Servlet容器,由Apache软件基金会的Jakarta项目开发,广泛用于部署Java Web应用程序...
综上所述,Apache Tomcat MySQL多服务器集群负载均衡是一种有效的解决方案,通过分布式部署、负载均衡和故障转移策略,可以显著提升系统性能,应对高并发访问,保证服务的高可用性和数据的可靠性。
7. **线程模型**:Tomcat使用多线程处理并发请求,提高服务器性能。每个请求由单独的线程处理,确保了请求的独立性。 8. **连接器与协议**:Tomcat支持多种连接器,如HTTP、AJP等,它们负责与客户端建立连接并处理...
Apache Tomcat是一款开源的Web应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。它是Apache软件基金会的...通过深入理解其内部结构和配置,开发者可以更好地利用Tomcat构建和管理高性能的Web服务。
2. **启动与停止**:通过`bin/startup.sh`(Linux/Unix)或`bin/startup.bat`(Windows)脚本启动Tomcat,使用`bin/shutdown.sh`或`bin/shutdown.bat`关闭服务。 3. **配置文件**:主要的配置文件包括`conf/server....
8. **安全性**: Tomcat支持基本的身份验证和授权,如通过`conf/tomcat-users.xml`配置用户和角色,以及在`conf/web.xml`中定义安全约束。还可以通过SSL/TLS配置实现HTTPS协议,增强数据传输的安全性。 9. **性能...
5. **多线程处理**:Tomcat使用多线程模型来处理并发请求,保证了高效的服务响应。 6. **安全性**:Tomcat提供了SSL和TLS支持,可以实现加密通信,同时可以通过Realm配置进行用户身份验证和授权。 在"Apache-tomcat...
3. **线程模型**:Tomcat使用多线程模型处理并发请求,提高了服务器的响应速度和吞吐量。 4. **连接器(Connector)**:Tomcat通过不同的连接器支持多种协议,如HTTP、AJP等,使得与其他Web服务器集成成为可能。 5...