.blackout {
background-color:#000;
opacity:.7;
filter:alpha(opacity=70);
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
z-index:100;
display:none;
cursor:pointer;
}
출처 :
http://displayhelloworld.blogspot.kr/2013/01/pop-out-window-with-dim-background.html
2014/10/28
2014/10/27
[Spring] Spring mvc에서 Quartz 적용하기
1. 샘플 프로젝트 생성
STS 에서 [File] - [New] - [Spring Template Project] 메뉴를 클릭한 후 Spring MVC Project를 이용해 샘플 프로젝트를 생성한다.
2. pom.xml 파일 수정
quartz 관련 모듈을 이용하기 위해서 pom.xml 파일에 관련 라이브러리들 넣는다.
spring-tx, quartz, commons-collections, javax.transaction 4개 넣어줘야한다.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework-version}</version></dependency><!-- Quartz framework and dependencies --><dependency> <groupId>opensymphony</groupId> <artifactId>quartz</artifactId> <version>1.6.3</version> <scope>compile</scope></dependency><!-- Quartz 1.6.0 depends on commons collections --><dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> <scope>runtime</scope></dependency><!-- Quartz 1.6.0 requires JTA in non J2EE environments --><dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> <scope>runtime</scope></dependency> |
3. 주기적으로 실행 될 Bean 생성
2개의 Bean을 만든다.
CronQuartz1.java
package com.mungchung.sample;import java.text.SimpleDateFormat;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.scheduling.quartz.QuartzJobBean;public class CronQuartz1 extends QuartzJobBean{ @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { long time = System.currentTimeMillis(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); System.out.println("Cron trigger 1 (5 second): current time = " + sdf.format(time)); }} |
CronQuartz2.java
package com.mungchung.sample;import java.text.SimpleDateFormat;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.scheduling.quartz.QuartzJobBean;public class CronQuartz2 extends QuartzJobBean{ @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { long time = System.currentTimeMillis(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); System.out.println("Cron trigger 2 (1 minute): current time = " + sdf.format(time)); }} |
4. quartz Bean과 위에서 생성한 Bean 연동
2개의 Bean이 각각 다른 시간차이로 실행되도록 설정해줄것이다.
CronQuartz1.java - 5초마다 실행
CronQuartz2.java - 1분마다 실행
/src/main/webapp/WEB-INF/spring/root-context.xml
<!-- 1. Cron 대상이 되는 클래스 정의 --><bean id="cronQuartz1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.mungchung.sample.CronQuartz1"/></bean><bean id="cronQuartz2" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.mungchung.sample.CronQuartz2"/></bean><!-- 2. Cron 시간 설정 --><bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="cronQuartz1"/> <property name="cronExpression" value="0/5 * * * * ?"/></bean><bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="cronQuartz2"/> <property name="cronExpression" value="0 0/1 * * * ?"/></bean><!-- 3. Cron 실행 --><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger1"/> <ref bean="cronTrigger2"/> </list> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">3</prop> <prop key="org.quartz.threadPool.threadPriority">4</prop> <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> <prop key="org.quartz.jobStore.misfireThreshold">60000</prop> </props> </property></bean> |
Cron Expression
총 7개의 필드 있고 마지막 필드(년도)는 생략 가능하다
| 필드이름 | 허용 값 |
| 초(Seconds) | 0 ~ 59 |
| 분(Minutes) | 0 ~ 59 |
| 시간(Hours) | 0 ~ 23 |
| 달의 날짜(Day-of-month) | 1 ~ 31 |
| 달(Month) | 1 ~ 12 or JAN ~ DEC |
| 주의 날짜(Day-of-week) | 1 ~ 7 or SUN-SAT |
| 년도(Year) (선택가능) | 빈값, 1970 ~ 2099 |
Cron Expression의 특수문자
| Expression | 설명 | 예시 |
| * | 모든 수를 나타냄 | |
| - | 값의 사이를 의미 | * 10-13 * * * * 10,11,12,13분에 동작함 |
| , | 특정값 지칭 | * 10,11,13 * * * * 10,11,13분에 동작함 |
| / | 값의 증가를 표현 | * 0/5 * * * * 0분부터 시작해서 5분마다 동작 |
| ? | 특별한 값이 없음을 나타냄(day-of-month, day-of-week 필드만 사용) | |
| L | 마지막 날을 나타냄(day-of-month, day-of-week 필드만 사용) |
6. 실행결과
실행결과를 보면 하나는 5초마다, 다른 하나는 1분마다 Bean이 실행되고 있음을 알수 있다.
출처 :
피드 구독하기:
덧글 (Atom)