tomcat启动,但是spring配置的bean并没有初始化
2015-01-05 17:19
1566 查看
今天在做一个spring配置定时器的任务时,发现定时器并没有启动。
但是所有的定时器spring的配置代码是毫无错误的:
<bean id="timerBeanId" class="timerBean">
</bean>
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="timerBeanId" />
<property name="period">
<value>10000</value>
</property>
</bean>
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduleReportTask"/>
</list>
</property>
</bean>
因为同样的配置我放到了其他项目里面可以运行调通。那问题就不是定时器配置的问题了,问题在于项目框架本身。
问题解决流程:
1.我以debugger模式启动服务(部署到tomcat中),在定时器run()方法上加上断点,没有执行
2.通过上一步说明定时器没有一执行的timertask中,接着在timertask类中添加无参构造,并打印信息。因为timerTask是通过spring配置文件进行初始化的,我要看看是否在服务启动的时候bean进行了初始化,结果还是没有执行。
3.通过上一步说明spring并没有初始化相应的bean类,为了证实这个结果,我在其他的bean的无参构造函数中同样加打印信息,结果还是没有打印出结果。
4.问题渐渐明朗起来,就是在服务启动的时候没有启动spring。最后发现web.xml中没有配置spring的启动Listener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
加上此listener后服务启动,spring初始化bean然后定时器执行
但是所有的定时器spring的配置代码是毫无错误的:
<bean id="timerBeanId" class="timerBean">
</bean>
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="timerBeanId" />
<property name="period">
<value>10000</value>
</property>
</bean>
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduleReportTask"/>
</list>
</property>
</bean>
因为同样的配置我放到了其他项目里面可以运行调通。那问题就不是定时器配置的问题了,问题在于项目框架本身。
问题解决流程:
1.我以debugger模式启动服务(部署到tomcat中),在定时器run()方法上加上断点,没有执行
2.通过上一步说明定时器没有一执行的timertask中,接着在timertask类中添加无参构造,并打印信息。因为timerTask是通过spring配置文件进行初始化的,我要看看是否在服务启动的时候bean进行了初始化,结果还是没有执行。
3.通过上一步说明spring并没有初始化相应的bean类,为了证实这个结果,我在其他的bean的无参构造函数中同样加打印信息,结果还是没有打印出结果。
4.问题渐渐明朗起来,就是在服务启动的时候没有启动spring。最后发现web.xml中没有配置spring的启动Listener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
加上此listener后服务启动,spring初始化bean然后定时器执行
相关文章推荐
- tomcat启动,但是spring配置的bean并没有初始化
- 在配置Shiro时,启动tomcat报错出现异常(org.springframework.beans.factory.BeanCreationException)
- Spring中配置Bean的初始化和销毁
- Spring系列【11】配置Bean的初始化行为
- jdk配置正确但是tomcat服务器启动时一闪而过
- Intellij Idea 在spring-mybatis下因不编译resources配置文件,无法启动tomcat的问题
- 关于springMVC deploy时 启动tomcat出现找不到spring的xml配置文件的原因
- Web.xml配置详解之context-param (加载spring的xml,然后初始化bean看的)
- java环境配置正确,但是tomcat不能启动的解决办法
- 监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化
- Java获取Tomcat启动中的spring管理的容器注入的实体,用来获取相应的bean
- 【Spring】Spring常用配置-Bean的初始化和销毁(生命周期)
- 模拟Spring中applicationContext.xml配置文件初始化bean的过程
- spring容器bean实例化之后添加一些自己的逻辑处理(应用实例启动tomcat加载缓存)
- 启动tomcat spring初始化两次问题(eg:@PostConstruct)
- Spring学习中出现的问题(一)——配置启动篇(服务器为Tomcat)
- 当web中应用spring框架启动后,获得spring初始化的bean和ServletContext
- Tomcat启动报java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
- eclipse中配置的tomcat 启动正常 但是访问报404错误
- eclipse中配置的tomcat 启动正常 但是访问报404错误