`

解决Tomcat重复加载Spring配置文件

阅读更多

当我们为自己的Web应用而改动Tomcat中conf/server.xml,可以不录入项目路径就可以访问应用.

但是更改完毕后,启动Tomcat会发现一种现象就是重复加载Spring配置文件。

 

现象:

控制台端会输出日志:

信息: Initializing Spring root WebApplicationContext
.......
信息: Initializing Spring root WebApplicationContext
.......

 

配置:

原server.xml配置

Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  </Host>

改动后server.xml配置

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="frms4j" reloadable="true"/> 
</Host>

 

原理:

在Web环境里,会使用ContextLoader构造ApplicationContext后,压进Servlet Context。

由ContextLoaderListener或ContextLoaderServlet,在Web应用启动时完成。
然后在Jsp/Servelet中,可以通过Servlet Context取得ApplicationContext:
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(application);

解决:
当然解决办法有很多,主要是在server.xml配置上做手脚:
1、撤销掉<Context>标签,但是URL中需要加入项目web路径
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  </Host>

2、在Tomcat下新建newWebapps,然后修改server.xml  
<Host name="localhost" appBase="newWebapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="../webapps/frms4j" reloadable="true"/> 
</Host>
优点:不影响Eclipse的集成部署
注意:可能会引发问题,找不到manager和host-manager目录,把这两个目录拷贝到新指向的目录即可

3、新建目录myapps平级于webapps,然后修改server.xml  
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="../myapps/frms4j" reloadable="true"/> 
</Host>

4、在webapps目录下新建目录myapp,然后修改server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/myapp/frms4j" reloadable="true"/> 
</Host>
 


 

分享到:
评论

相关推荐

    Spring动态加载配置文件

    接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...

    Spring Tool Suite 搭建tomcat配置调试环境

    通过上述步骤,我们成功地在Spring Tool Suite中配置了Tomcat服务器,创建了一个简单的Web项目,并进行了调试。这对于Spring开发者来说是一个基本但至关重要的工作流程,确保了开发环境的顺畅运行。在实际开发中,...

    springboot单独升级Tomcat

    Spring Boot 单独升级 Tomcat ...在 Spring Boot 项目中,Tomcat 的升级需要考虑到项目的依赖关系和配置文件的修改。在升级过程中,需要注意避免错误解决方案,选择正确的解决方案来升级 Tomcat。

    Tomcat6+spring+jndi配置数据源说明.docx

    * 在配置数据源时,好像需要在 tomcat/bin 下添加文件,要不报错,什么 APR 啥的。 * 如果工程 lib 下含有了 jsp-api.jar 和 servlet-api.jar,则应删去使用 tomcat 的,要不报错。 测试办法: * 在工程根路径下...

    spring-instrument-tomcat源码

    而Spring Instrument Tomcat模块则是Spring框架中的一个重要组成部分,它为Tomcat服务器提供了类加载器级别的增强功能,进一步提升了Spring应用在服务器端的性能和可调试性。本文将对Spring Instrument Tomcat的源码...

    Eclipse+tomcat+maven 配置Spring mvc图文教程.zip

    4. 创建Spring配置文件,定义Controller Bean和其他相关Bean。 5. 编写Controller类,实现业务逻辑。 6. 创建视图模板(JSP、Thymeleaf等),并配置视图解析器。 7. 在Eclipse中配置Tomcat服务器,将项目部署上去。 ...

    Eclipse+tomcat+maven 配置Spring mvc图文教程

    - 在`WEB-INF`目录下创建`mvc-dispatcher-servlet.xml`配置文件。此文件用于定义Spring MVC的配置,包括视图解析器、处理器映射器等。例如: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans...

    tomcat配置入门和配置多个项目

    - 另外,也可以直接在Tomcat的`bin`目录下的`catalina.bat`文件中手动添加JDK路径,例如:`set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18`。 2. **启动Tomcat** - 找到Tomcat的`bin`目录下的`startup.bat`...

    Tomcat7+Spring3异常Failed to start component

    在Tomcat中部署Spring应用,通常需要将Spring的ApplicationContext配置文件(如`applicationContext.xml`)包含在Web应用的`WEB-INF`目录下。 2. **异常类型**: "Failed to start component"这个异常通常出现在...

    Eclipse+tomcat+maven 配置Spring

    接下来,可以创建Spring配置文件(如applicationContext.xml),定义bean和注入依赖。同时,配置Web.xml以初始化Spring DispatcherServlet,使Spring MVC框架生效。 9. **Spring MVC**: Spring MVC是Spring框架的...

    springsession管理多台tomcatsession

    为了使用 Redis 作为 session 存储,需要在 Spring Boot 的配置文件 `application.properties` 或 `application.yml` 中添加 Redis 连接配置,例如: ```properties spring.redis.host=localhost spring.redis....

    spring boot项目和vue一起放在tomcat部署

    首先,我们需要在 Tomcat 服务器的配置文件中添加一个新的 Context。Context 是 Tomcat 服务器中的一种虚拟主机,可以用来配置应用程序的部署路径和名称。在 server.xml 文件中,我们添加了一个新的 Context,如下所...

    实现tomcat热更新class文件.docx

    在Tomcat的conf目录下,有一个名为`server.xml`的配置文件。这个文件包含了Tomcat服务器的全局配置信息。我们需要关注其中的`Host`和`Context`元素。`Host`元素定义了一个虚拟主机,而`Context`元素代表了一个Web...

    Spring Boot项目导出war包放到tomcat运行跳转到页面出现404报错

    ### Spring Boot项目导出WAR包并部署到Tomcat遇到404错误的解析与解决方案 在实际开发过程中,经常会遇到将Spring Boot应用打包为WAR格式并部署至Tomcat服务器的需求。这种方式可以更好地与传统Java Web项目的部署...

    监听器获取Spring配置文件的方法

    本文将详细介绍如何通过监听器获取Spring配置文件中的bean,以及几种实现方式的优劣分析。 首先,我们需要创建一个监听器来执行这些初始化任务。这里创建了一个名为`InitDataListener`的类,它继承自`...

    Spring+JMS+ActiveMQ+Tomcat jar下载

    具体实现时,开发者通常会创建一个Spring配置文件,定义JMS相关的bean,如ConnectionFactory、Destination(队列或主题)以及MessageListener。然后,通过Spring的JMS模板发送消息,并注册MessageListener监听特定的...

    spring5.x+springmvc5.x+mybatis3.5x+tomcat9+jdk8+maven 项目框架搭建 1.1版本

    3. **配置Spring**:编写Spring配置文件,声明bean,实现DI和AOP。 4. **配置Spring MVC**:设置DispatcherServlet,编写web.xml,定义视图解析器和处理器映射器。 5. **配置MyBatis**:创建MyBatis的配置文件,配置...

    struts2+hibenate+spring的配置文件

    然后,`applicationContext.xml`是Spring的配置文件,它定义了Bean的实例化、依赖注入、事务管理等。在SSH集成中,Spring作为IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)容器,...

Global site tag (gtag.js) - Google Analytics