2013-12-22 3 views
3

Glassfish 서버에서 실행되는 Java 웹 응용 프로그램이 있습니다. war 파일을 사용하여 다양한 서버에 응용 프로그램을 배포하는 데 사용합니다. 이제 내 응용 프로그램의 데이터베이스를 최신 상태로 유지하려면 사용자 상호 작용없이 응용 프로그램 내부에서 일부 클래스를 실행하고 싶습니다 (응용 프로그램이 실행 중이거나 현재 사용자/세션에 의존하지 않아야 함). 나는 일부를 사용하는 것을 보았다. 타이머TimerTask 클래스 나는 주기적으로 모든 작업을 실행할 수있다. 하지만 처음으로 초기화하는 방법은 무엇입니까?Java 웹 응용 프로그램에서 주기적으로 데이터베이스를 업데이트하는 가장 좋은 방법

이 과정을 완료하는 방법에 대한 의견을 보내주십시오.

답변

3

작업 스케줄러를 사용하십시오. Quartz http://quartz-scheduler.org/을 고려하여 프로그램이 시작될 때 시작하십시오. 스케줄러 사용에 대한 좋은 점은 프로그램 유지 보수가 용이하고 다른 새로운 작업을 쉽게 만들 수 있다는 것입니다.

1

서블릿을 생성하고 시작할 때로드하십시오. 거기서 당신의 작업을 초기화 할 수 있다고 생각합니다.

+0

ServletContextListener가 더 좋을 것입니다. – Chase

1

석영은 이미 제안 된 좋은 해결책입니다. 당신이 뭔가 더 라이트 무게를 필요로하는 경우, 나는 예약 집행을 살펴 것 :

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

그것은 석영보다 유연,하지만 당신은 어떤 종속성을 추가 할 필요가 없습니다 그것은 것을 수 있습니다 그것은 당신의 필요에 충분하다.

시작하는 중; 필자는 보통 Spring을 사용하여 내 응용 프로그램과 그 의존성을 정리합니다. 따라서 스케줄러를 시작하고 예정된 작업을 실행하는 것은 간단합니다.

1

사용중인 Java EE의 버전에 따라 대답이 달라집니다. Java EE 5 및 이전 버전에서는 Timer API을 사용하는 배포시 ServletContextListener를 사용하여 코드를 실행 (EJB 호출)했습니다. Java EE 6 이상에서는 어노테이션과 cron 유형 구문을 사용하여 @Schedule 주석을 사용하여 배포시 작업을 예약 할 수 있습니다.

물론 자동 배포 시간 예약이 필요하지 않은 경우 제출할 때 EJB를 호출하는 웹 양식을 만들면 Timer API가 프로그래밍 방식으로 호출됩니다.

자세한 내용은 the Java EE tutorial

관련 문제