如何让java定时执行一个方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让java定时执行一个方法相关的知识,希望对你有一定的参考价值。

我有一个缓存,需要定时去维护,又不想开线程,有没有什么好的方法,可以定时去维护,比如每周一的12点

参考技术A 你可以通过 spring的定时器来实现该功能, 给你一个例子吧.
Timer.xml 配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> -->
<beans default-autowire="byName" default-lazy-init="true">
<bean id="zntask" class="com.soft.util.quartzTask"></bean> <!—实现定时功能的类-- >

<bean id="ZntaskTopSaleJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="zntask"></property>
<!—quartzTask 定时调用的方法 znrwdb -- >
<property name="targetMethod" value="znrwdb"></property>
</bean>

<bean id="zntaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="ZntaskTopSaleJobDetail"/>
</property>
<property name="cronExpression">
<value>0 0 0 12 * * ?</value> <!-- 每隔12小时 执行一次 -->
</property>
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="zntaskTrigger"/>
</list>
</property>
</bean>
</beans>
最后将 timer.xml 引入spring的applicationContext.xml文件即可,启动服务器时会自动加载执行定时方法 znrwdb
Eg:
applicationContext.xml 中:
<!-- 引入定时器 -->
<import resource=" timer.xml” />
参考技术B 用quartz可以实现本回答被提问者采纳

如何让java支持httponly

参考技术A 目前sun公司还没有公布相关的API,但PHP、C#均有实现。搞javaEE的兄弟们比较郁闷了,别急下文有变通实现

HttpOnly的设置样例
javaEE
1 response.setHeader("Set-Cookie", "cookiename=value;
2 Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
具体参数的含义再次不做阐述,设置完毕后通过js脚本是读不到该cookie的,但使用如下方式可以读取
1 Cookie cookies[]=request.getCookies();
C#
1 HttpCookie myCookie = new HttpCookie("myCookie");
2 myCookie.HttpOnly = true;
3 Response.AppendCookie(myCookie);
VB.NET
1 Dim myCookie As HttpCookie = new HttpCookie("myCookie")
2 myCookie.HttpOnly = True
3 Response.AppendCookie(myCookie)

但是在.NET 1.1 ,中您需要手动添加
1 Response.Cookies[cookie].Path += ";HTTPOnly";
PHP4
1 header("Set-Cookie: hidden=value; httpOnly");

PHP5
1 setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
最后一个参数为HttpOnly属性本回答被提问者和网友采纳

以上是关于如何让java定时执行一个方法的主要内容,如果未能解决你的问题,请参考以下文章

Java 如何实现这样的定时任务

如何让脚本定时执行

如何让asp.net应用程序定时自动执行代码

java定时器 每天凌晨 固定执行一个方法

java 怎么写定时任务

如何让linux定时任务crontab按秒执行