ScheduledBean, ScheduledServiceBean 추가
parent
c9b0a62375
commit
cda6994f99
@ -0,0 +1,31 @@
|
||||
package cokr.xit.foundation.component;
|
||||
|
||||
/**지정한 일정에 따라 작업을 수행하는 Bean.
|
||||
* {@link ScheduledServiceBean}이 작업을 시작한다.
|
||||
* @author mjkhan
|
||||
*/
|
||||
public abstract class ScheduledBean extends ManagedComponent {
|
||||
private boolean busy;
|
||||
|
||||
/**현재 Bean이 작업 중인지 반환한다.<br />
|
||||
* {@link ScheduledServiceBean}이 사용한다.
|
||||
* @return 작업 여부
|
||||
* <ul><li>작업 중이면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean isBusy() {
|
||||
return busy;
|
||||
}
|
||||
|
||||
/**현재 Bean의 작업 여부를 설정한다.<br />
|
||||
* {@link ScheduledServiceBean}이 사용한다.
|
||||
* @param busy 작업 여부
|
||||
* <ul><li>작업 중이면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public void setBusy(boolean busy) {
|
||||
this.busy = busy;
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package cokr.xit.foundation.component;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**지정한 일정에 따라 작업을 수행하는 서비스 구현체가 상속받는 베이스 클래스.
|
||||
* 일정은 quartz 라이브러리를 사용해 지정한다.
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class ScheduledServiceBean extends AbstractServiceBean {
|
||||
/**주어진 작업을 수행한다. scheduled이 작업 중이면 무시한다.
|
||||
* @param scheduled 작업 Bean
|
||||
* @param task 작업 Bean의 메소드
|
||||
*/
|
||||
protected void execute(ScheduledBean scheduled, Runnable task) {
|
||||
if (scheduled.isBusy()) return;
|
||||
|
||||
scheduled.setBusy(true);
|
||||
try {
|
||||
task.run();
|
||||
} finally {
|
||||
scheduled.setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
/**주어진 작업을 수행하고 결과를 반환한다. scheduled이 작업 중이면 무시하고 null을 반환한다.
|
||||
* @param scheduled 작업 Bean
|
||||
* @param task 작업 Bean의 메소드
|
||||
* @return 작업 결과
|
||||
*/
|
||||
protected <T> T execute(ScheduledBean scheduled, Supplier<T> task) {
|
||||
if (scheduled.isBusy()) return null;
|
||||
|
||||
scheduled.setBusy(true);
|
||||
try {
|
||||
return task.get();
|
||||
} finally {
|
||||
scheduled.setBusy(false);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue