Spring Scheduler关闭错误

在tomcat容器中开发基于SPRING的调度程序时,我总是在undeploy webapp或shutdown服务器上获得此日志输出:

Apr 28, 2010 4:21:33 PM org.apache.catalina.core.StandardService stop

INFO: Stopping service Catalina

Apr 28, 2010 4:21:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: A web application appears to have started a thread named [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1] but has failed to stop it. This is very likely to create a memory leak.

Apr 28, 2010 4:21:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: A web application appears to have started a thread named [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-2] but has failed to stop it. This is very likely to create a memory leak.

Apr 28, 2010 4:21:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: A web application appears to have started a thread named [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3] but has failed to stop it. This is very likely to create a memory leak.

Apr 28, 2010 4:21:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: A web application appears to have started a thread named [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4] but has failed to stop it. This is very likely to create a memory leak.

Apr 28, 2010 4:21:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: A web application appears to have started a thread named [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-5] but has failed to stop it. This is very likely to create a memory leak.

.

.

.

SEVERE: A web application created a ThreadLocal with key of type [org.springframework.core.NamedThreadLocal] (value [Prototype beans currently in creation]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

Apr 28, 2010 4:21:34 PM org.apache.coyote.http11.Http11Protocol destroy

INFO: Stopping Coyote HTTP/1.1 on http-8606

我将此监听器添加到我的webapp

public class ShutDownHook implements ServletContextListener {

@Override

public void contextDestroyed(ServletContextEvent arg0) {

BeanFactory bf = (BeanFactory) ContextLoader.getCurrentWebApplicationContext();

if (bf instanceof ConfigurableApplicationContext) {

((ConfigurableApplicationContext)bf).close();

}

}

@Override

public void contextInitialized(ServletContextEvent arg0) {

}

}

和我的web.xml

<listener>

<listener-class>pkg.utility.spring.ShutDownHook</listener-class>

</listener>

但是错误仍然存​​在。

弹簧配置:

<bean id="run" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="concurrent" value="false" />

<property name="targetObject" ref="scheduler" />

<property name="targetMethod" value="task" />

</bean>

<bean id="cronTrg" class="org.springframework.scheduling.quartz.CronTriggerBean">

<property name="jobDetail" ref="run" />

<property name="cronExpression" value="0/5 * * * * ?" />

</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy">

<property name="triggers">

<list>

<ref bean="cronTrg" />

</list>

</property>

</bean>

回答:

您需要添加一个关闭挂钩-

在您的情况下,您可能应该在执行此操作的web应用程序中添加一个上下文侦听器(侦听器+实现类的web.xml条目)。

使用close,这是最简单的。

((YourClass)yourObject).close();

以上是 Spring Scheduler关闭错误 的全部内容, 来源链接: utcz.com/qa/402707.html

回到顶部