一、现象:
每次启动Tomcat 的时候,工程会被加载两次
二、原因:
配置虚拟目录引起,如下配置:
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="d:\myapp"/>
</Host>
我们在Host标签里配置了appBase="webapps",tomcat会去加载一次应用。
在<Context>里配置了一次docBase,tomcat会又去加载一次引用。
导致项目会加载二次。
三、解决:
<Host name="localhost" debug="0"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="d:\myapp"/>
</Host>
去掉appBase="webapps"即可!
分享到:
相关推荐
在题目中的代码中,`SchedulerFactoryBean` 被配置为非懒加载,这意味着当 Spring 上下文初始化时,Quartz 调度器就会被创建并准备好调度任务。 ```xml class="org.springframework.scheduling.quartz....
Spring Boot 解决项目启动时初始化资源的方法 在本文中,我们将介绍 Spring Boot 如何解决项目启动时初始化资源的方法。通过示例代码,我们将详细介绍 CommandLineRunner 的使用方法,帮助大家解决项目启动初始化...
1. **初始化(Init)**:当Servlet首次被加载或者请求时,Servlet容器(如Tomcat)会调用Servlet的`init()`方法进行初始化。在这个阶段,Servlet可以进行一次性的配置,例如加载配置文件、打开数据库连接等。 2. **...
本文将详细介绍如何通过调整Tomcat启动参数来进行JVM的垃圾收集(GC)优化配置,提高Tomcat服务的稳定性和效率。 #### 二、基本概念与算法介绍 在深入探讨优化配置之前,我们首先了解一些基础的概念和算法: 1. *...
- **加载和初始化Servlet**:当第一次访问某个Servlet时,Tomcat会将其加载到内存中并进行初始化。这一过程涉及到Class Loader机制的应用,确保每个Servlet类能够正确加载。 - **会话管理**:Tomcat使用会话管理机制...
3. **生命周期管理**:Tomcat使用生命周期接口来管理Servlet和Context的初始化、服务和销毁过程。通过源码,你可以学习如何实现这些接口来自定义组件的行为。 4. **部署和加载机制**:Tomcat通过Web应用的`WEB-INF/...
- `-Xms`:初始化堆大小。 - `-Xmx`:最大堆大小。 - `-XX:MaxNewSize`:新生代的最大大小。 - `-XX:MaxPermSize`:(旧版JVM)永久代的最大大小。 对于JVM内存区域,主要包括以下几部分: - **堆内存**:分为...
在这个上下文中,它可能被用来启动Tomcat服务器,或者执行一些初始化任务,如设置环境变量,连接数据库,预加载数据等。 总结这些知识点,我们可以得出以下几点: 1. Tomcat是Java Web应用的服务器,用于运行...
容器负责加载和初始化Servlet,管理Servlet的生命周期,并在有请求时调用Servlet的service方法。容器也负责请求和响应的上下文管理,包括用户会话的管理等。容器的模块化设计使得其可以轻松地扩展和替换其中的组件,...
- **初始化阶段**:当Servlet容器第一次加载Servlet时,会调用init()方法进行初始化。 - **服务阶段**:Servlet容器接收到客户端请求后,调用service()方法来处理请求。 - **销毁阶段**:当Servlet容器停止时,调用...
为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。启动服务器初始化过程包括执行 ServletContainersInitConfig 类、初始化 web 容器、执行 ...
负整数表示在需要时才加载,没有设置或值为负数时,容器会在Servlet第一次被请求时才初始化。值相等的Servlet加载顺序由容器决定。 在Web.xml文件中,配置元素的物理顺序并不影响加载顺序,例如,监听器(Listener...
Servlet的生命周期包括四个主要阶段:加载和实例化、初始化、服务以及销毁。在本实验中,我们将通过编写和配置Servlet类来理解这些阶段。 1. **加载和实例化**: 当Web应用程序被部署到服务器(如Tomcat)时,...
8. **持久化数据**:`SendDataToCnFileAction.java`中的“CnFile”可能指的是中国服务器上的文件,处理大量数据时,应考虑使用高效的持久化策略,如数据库连接池,避免一次性加载大量数据到内存。 9. **日志与错误...
为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。 启动服务器初始化过程 在启动服务器初始化过程中,会执行 ...
SpringMVC 的工作流程可以分为两个阶段:启动服务器初始化过程和单次请求过程。 1. 启动服务器初始化过程: * 执行 ServletContainersInitConfig 类,初始化 web 容器 * 执行 createServletApplicationContext ...
Servlet生命周期是Java Web开发中的核心概念,它涵盖了Servlet从创建到销毁的整个过程,主要分为初始化阶段、运行阶段和销毁阶段。这个过程完全由Servlet容器(如Tomcat、Jetty等)管理。 **初始化阶段** 在初始化...
- **初始化Servlet:** 最后一步是调用Servlet的`init()`方法,通常在此方法中进行初始化操作,如设置环境变量、加载配置文件等。`init()`方法接收一个`ServletConfig`对象作为参数。 **2. 自动加载** 除了首次...
启动Tomcat服务器,加载并初始化`HTMLThemeServlet`。 **步骤4:浏览结果** 通过浏览器访问相应的URL,可以查看带有主题地图的页面,体验不同主题对地图展示效果的影响。 ### 结论 通过以上两个实例,我们可以...
这种方式虽然简单,但存在一个问题:当Spring的`ContextLoaderListener`已经加载了配置文件后,我们的监听器再次加载会导致bean被实例化两次,增加了不必要的资源消耗。 2. **从ServletContext中获取** 既然...