web.xml:
<listener>
<listener-class>com.fk.MyServletContentListener</listener-class>
</listener>
listener:
public class MyServletContentListener implements ServletContextListener {
ServerThread st = null;
public void contextInitialized(ServletContextEvent sce) {
// 重写的contextInitialized方法
sce.getServletContext().log("[fiker.Server] Start ServerThread.");
st = new ServerThread();
st.start();
sce.getServletContext().log("[fiker.Server] ServerThread starting succ...");
}
public void contextDestroyed(ServletContextEvent sce) {
// 重写的contextDestroyed方法
sce.getServletContext().log("[fiker.Server] Stop ServerThread.");
st.setFlag(false);
sce.getServletContext().log("[fiker.Server] ServerThread stop succ...");
}
}
serverThread:
public class ServerThread extends Thread {
private boolean flag=true;
ServerSocket ss;
public void run(){
try {
ss=new ServerSocket(9999);
} catch (IOException e) {
// TODO Auto-generated catch block
this.setFlag(false);
e.printStackTrace();
}
Socket s;
while(flag)
{
try {
s=ss.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
this.setFlag(false);
e.printStackTrace();
}
}
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
分享到:
相关推荐
在Tomcat中,我们可以通过编写一个Servlet类并将其配置在web.xml文件中,使得在Tomcat服务器启动时自动加载并初始化这个Servlet。 要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加...
- 源码:如果你正在对Tomcat进行深入研究或自定义构建,理解源码中的AprLifecycleListener类和其初始化过程有助于解决问题。 - 工具:解决问题可能需要使用一些工具,如编译器(如GCC)来编译APR库,或使用系统包...
- **初始化堆内存与最大堆内存**:`-Xms64m -Xmx4096m`,这里设置的最小内存为64M,最大为4096M。如果应用程序本身占用的内存不大,可以适当减少这些值,避免浪费资源。 - **永久代大小**:`-XX:PermSize=32m -XX:...
3. **初始化Connector**:每个Connector初始化时,会创建Acceptor线程,监听指定端口等待客户端连接。 4. **加载Catalina**:Tomcat的核心组件Catalina开始加载,创建Engine、Host和Context对象。同时,会读取`WEB-...
- 首先,Tomcat读取`server.xml`配置文件,初始化必要的组件和服务。 - 接着,Tomcat会加载`WEB-INF/web.xml`文件,这是每个Web应用程序的部署描述符,定义了Servlet、过滤器和监听器等。 - 然后,Tomcat创建并...
2. **生命周期管理**:Tomcat中的每个组件都有其特定的生命周期,包括初始化、启动、暂停、恢复、停止和销毁。了解这些状态转换有助于理解服务的启动和关闭过程。 3. **容器概念**:在Tomcat中,容器是一个可以包含...
这些脚本会执行一些初始化任务,包括设置环境变量、加载JVM参数、初始化类加载器以及启动服务器。 问题可能出现在以下几个方面: 1. **环境变量配置**:确保`JAVA_HOME`和`CATALINA_HOME`环境变量已正确设置。`...
- 加载`$CATALINA_HOME/bin/bootstrap.jar`初始化Tomcat,并执行`Main`方法。 - 加载`$JAVA_HOME/lib/tools.jar`,Sun的工具类,包括编译JSP为Servlet的工具类。 - **Common**: - 这个目录下的类虽然对Tomcat和...
- `-Xms`:初始堆大小,如`-Xms512m`表示初始化时分配512MB内存。 - `-Xmx`:最大堆大小,如`-Xmx1024m`限制堆的最大值为1GB。 - `-XX:MaxPermSize`:非堆内存大小,对于Java 8之前的版本。 - `-XX:Metaspace...
1. **服务器启动流程**:从启动脚本开始,理解如何初始化服务器环境,加载配置文件,创建并启动线程池等。 2. **容器概念**:Tomcat中的Container接口及其实现,如Engine、Host、Context和Wrapper,它们如何组织和...
这个类可能包含了配置Tomcat、初始化Servlet、设置监听器以及启动服务器的相关代码。通过阅读和分析这个类,我们可以更深入地理解整个聊天系统的架构和工作流程。 总之,这个基于Tomcat 7.0.42的聊天应用展示了如何...
4. **使用后台线程**:在Web应用的初始化阶段,你可以启动一个新的后台线程来运行Socket服务。这样,即使Web请求处理完毕,Socket服务也能持续运行。 无论采用哪种方法,都要确保Socket服务的端口不会与Tomcat的...
3. **Servlet生命周期**:Servlet在Tomcat中的生命周期包括加载、初始化、服务、销毁四个阶段。Tomcat通过Servlet容器管理Servlet实例,确保其正确地创建、初始化和销毁。 4. **请求处理**:当一个HTTP请求到达时,...
1. 服务启动时,创建一个最大容量为200的线程数组,并初始化5个空闲线程。 2. 当有用户请求到达时,`threadpool.runIt(ThreadPoolRunnable)`方法被调用,传入一个实现了`ThreadPoolRunnable`接口的任务实例。 3. ...
Tomcat 的监听端口,protocol 指定了 Connector 的协议,connectionTimeout 指定了网络连接超时时间,maxThreads 指定了 Tomcat 可创建的最大线程数,minSpareThreads 指定了 Tomcat 初始化时创建的线程数,...
Tomcat6采用多线程模型处理请求,每个请求都会分配一个工作线程进行处理。这既保证了请求处理的并发性,也避免了线程池过度消耗资源的问题。 六、安全性 Tomcat6支持多种安全认证方式,如Basic认证、Form认证等,并...
其中,maxThreads="600" 指定了最大线程数为 600,minSpareThreads="100" 指定了初始化时创建的线程数为 100,maxSpareThreads="500" 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程,...
Tomcat 是一个流行的基于 Java 的 Web 应用服务器,为了确保 Tomcat 的稳定运行,需要根据实际情况调整 Tomcat 的内存大小。下面将介绍如何修改 Tomcat 的内存大小,在 Windows 和 Linux 两个操作系统下。 一、安装...
1. Bootstrap:启动过程始于Bootstrap类,它加载并初始化Server对象。 2. Server:Server对象包含了全局配置信息,并管理Service组件。 3. Service:Service包含一个或多个Connector(如Coyote)和一个Engine。 4...
开发者可以通过ContextConfigListener来监听Web应用的初始化过程,实现自定义配置。 3. **Connector**: 连接器组件是Tomcat接收和处理HTTP请求的部分。Tomcat通常有多个连接器,每个连接器可以配置不同的端口、协议...