项目部署到生产服上后,发现一个定时器任务的Bean在指定时间连续执行了两次。加日志调试发现这个Bean被初始化了两次,再进一步添加日志调试发现Web的启动类,也就是AbstractAnnotationConfigDispatcherServletInitializer的子类也被执行了两次。而在开发环境的IDE中测试时,则没有这种现象。于是怀疑是Tomcat的问题,但开发环境与生产环境的版本一致,只有开发环境中对Tomcat对根路径做了修改。
参照:http://www.lxway.com/206659492.htm 提供的方法:
引用
方法1:不配置根路径访问
方法2:将路径已出webapp目录,在docBase中指定路径(可以是相对于webapp的路径,或者绝对路径)【推荐】
方法3:替换ROOT目录【推荐】
方法4:在conf/Catalina/localhost生成ROOT.xml,并加入如下内容:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="xxx" path="" reloadable="true" />
按方法3,做了调整后,解决问题。
分享到:
相关推荐
4. **Spring的初始化回调**:有时Spring的初始化回调机制会导致Job被触发两次,需要确保回调方法中对Job的调用是正确的。 5. **错误的Cron表达式**:检查`cronExpression`,确保它不会在同一时间点触发两次任务。 ...
为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。启动服务器初始化过程包括执行 ServletContainersInitConfig 类、初始化 web 容器、执行 ...
1. **配置SpringMVC**:在`web.xml`中配置DispatcherServlet,设置其初始化参数以加载Spring的上下文配置文件。 2. **配置MyBatis**:在Spring的上下文配置文件中,配置SqlSessionFactoryBean,指定MyBatis的配置...
11. `@InitBinder`:初始化数据绑定,可以对WebDataBinder进行配置,如设置日期格式、忽略某些字段等。 12. `@RequestParam/@PathVariable/@ModelAttribute`的集合注解如`@RequestParams`, `@PathVariables`, `@...
在IT行业中,SpringMVC和MyBatis是两个非常重要的框架,它们经常被结合使用来构建企业级的Web应用程序。本项目聚焦于SpringMVC与MyBatis的整合,实现数据的增删改查(CRUD)功能,并且集成了分页功能,全部基于Maven...
3. **数据库脚本**:可能有创建表的SQL脚本,用于初始化Oracle数据库。 4. **Web部署**:可能包含web.xml文件,定义了DispatcherServlet的配置,以及其他Web相关的设置。 5. **测试**:可能有JUnit测试用例,用于...
为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。 启动服务器初始化过程 在启动服务器初始化过程中,会执行 ...
同时,需要引入jQuery、Bootstrap和WebUploader自身的JavaScript库,以及`uploader_demo.js`,这个文件通常包含了WebUploader的初始化配置和事件处理函数。 前端页面中,一个典型的WebUploader实例化区域可以是这样...
SpringMVC 的工作流程可以分为两个阶段:启动服务器初始化过程和单次请求过程。 1. 启动服务器初始化过程: * 执行 ServletContainersInitConfig 类,初始化 web 容器 * 执行 createServletApplicationContext ...
5. 在action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。 6. Filter在过滤时只能对request和response进行操作,而Interceptor可以对request、response、handler、modelAndView、...
Filter的生命周期包括启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;每一次请求时都只调用方法doFilter()进行处理;停止服务器时调用destroy()方法,销毁实例。Filter的职责包括在一个请求到达...
SpringMVC的配置过程可以分为两个阶段,分别是启动服务器初始化过程和单次请求过程。在启动服务器初始化过程中,需要创建SpringMVC配置类(SpringMvcConfig),使用配置类替换web.xml(ServletContainersInitConfig...
1. 创建一个内存数据类,用于存放静态的数据,并初始化: ```java public class MemoryData { private static Map, String> sessionIDMap = new HashMap,String>(); public static Map, String> getSessionIDMap()...
-- 初始化连接大小 --> <!-- 连接池最大使用连接数量 --> <!-- 连接池最小空闲 --> <!-- 获取连接最大等待时间 --> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接 --> ``` 在上面...
- **Struts2** 使用的是 `filter`,它的初始化时间通常比 servlet 要早,因为 filter 在应用启动时就会被初始化。Struts2 的 Filter 拦截所有的 HTTP 请求,并决定是否将其交给 Struts2 处理。 **2. 性能** - **...
"three.sql"可能是数据库的初始化脚本,包含创建表、插入初始数据等操作。在项目启动时,通常会运行这些脚本来设置开发环境。这一步对于设置MyBatis的数据源和实体类映射至关重要。 **5. "redianxinwen"** ...
工厂方式实例化是通过调用自定义的工厂方法对Bean进行实例化,包括静态工厂方法实例化和实例工厂方法实例化两种形式。 Bean的延迟加载 在Spring框架中,Bean的延迟加载是指在业务层等各种功能bean中使用延迟加载的...
容器负责管理Bean的生命周期,创建、初始化、配置以及销毁Bean。 二、Spring容器的基本应用 2.1 将一个Bean组件交给Spring容器 通常,我们通过在Java类上使用@Component、@Service、@Repository、@Controller等...
最后,确保在Spring初始化时启动调度器: ```xml ``` 在`StartScheduler`类的`start`方法中,你可以调用`schedulerFactoryBean`的`getScheduler().start()`方法来启动调度。 **使用技巧** - 使用`@...
我们可以通过实现`InitializingBean`接口的`afterPropertiesSet()`方法或使用`@PostConstruct`注解来定义初始化逻辑,通过`DisposableBean`接口的`destroy()`方法或`@PreDestroy`注解来定义销毁逻辑。 综上所述,这...