문제

Java 웹 응용 프로그램에서 주기적으로 하나의 기능을 실행해야합니다. 정기적으로 어떤 클래스의 기능을 호출하는 방법? 일부 이벤트가 서버에서 높은 부하처럼 발생했을 때 호출 기능이 있습니까? Crontab이란 무엇입니까? 그게 정기적으로 작동합니까?

도움이 되었습니까?

해결책

정기적으로 무언가를 부르려면 참조하십시오 타이머스크

다른 팁

더 강력한 것이 필요하면 사용할 수 있습니다 석영

에 관해서 crontab Unix 기계의 스케줄링 도구입니다.

서버의 부하가 높은 경우 호출 방법의 경우 적어도 두 가지 가능한 접근 방식이 있습니다. 앱 서버에는 동작을 모니터링하고 예상 조치를 취할 수있는 관리 후크가있을 수 있습니다. 또는 일반적으로 시스템 모니터링 기능 (예 : Tivoli 또는 OpenView)이 있으며 "이벤트"를 생성하므로 JMS 메시지와 같은 이벤트를 전달하고 서버가 선택하도록하기가 너무 어렵지 않아야합니다.

그러나 달성하고자하는 것에 대해 조금 더 설명하고 싶을 수도 있습니다. 적응 적 애플리케이션 Beahviour는 제대로하기가 매우 까다로울 수 있습니다.

주기적으로 무언가를 실행하려면 웹 서버에서하지 마십시오. 그것은 매우 잘못된 접근법 IMO 일 것입니다. 사용하는 것이 좋습니다 cron 대신, 유닉스와 같은 운영 체제에있는 경우. Windows 서버는 유사한 기능을 제공합니다.

Java 웹 응용 프로그램에서 주기적으로 하나의 기능을 실행해야합니다.

(1) 배포 디스크립터 (web.xml)를 살펴보면 시작 시간에 리스너를 시작합니다.

정기적으로 어떤 클래스의 기능을 호출하는 방법?

(2) 생성 a 시간제 노동자 청취자에서.

일부 이벤트가 서버에서 높은 부하처럼 발생했을 때 호출 기능이 있습니까?

(3) 일부 스레드를 실행하여 Java에 적합한 시스템 조건을 점검하고 시스템 프로그램 (가동 시간 등)을 실행하고 출력을 구문 분석합니다.

Crontab은 방법이 될 수 있지만 Java의 실행은 또 다른 JVM을 시작할 것이며 실제로 Servlet 컨테이너의 뜨거운 것입니다. 모두 동일한 JVM에서 실행됩니다.

java.util.concurrent를 잊지 마십시오 - 예 : 예정된 Threadpooleexecutor, 예 : 간단한 타이머 이상이 필요한 경우 많은 클래스가 있습니다.

http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

Java 1.4에 대한 백 포트도 있습니다. http://backport-jsr166.sourceforge.net.

Spring을 이미 사용하고 있다면 Spring의 작업 실행 프레임 워크 (@Scheduled 및 @Async를 사용하여 메소드를 사용하여 작업으로 작업하고 실제 작업을 작업자에게 위임하는 프로세서에서 기능을 구현하여 다음과 같이 설명합니다.

http://blog.springsource.com/2010/01/05/task-scheduling-simplifications-in-spring-3-0/

장점은 스프링 컨텍스트에서 CRON과 유사한 구문을 사용하여 타이머를 정의 할 수 있으며 작업을 설정하는 데 특별한 것이 필요하지 않으며 Java EE 애플리케이션에도 잘 통합되어 있으며 웹 서버 (어떤 사용자 정의이든 잘 작동해야합니다. 실은 항상하지 않는 경향이 있습니다).

정기적으로 어떤 클래스의 기능을 호출하는 방법?

몇 가지 해결책이 있습니다 : a 시간제 노동자, Java Cron 구현과 같은 cron4j, 석영, 또는 심지어 EJB 타이머 API. 하나 또는 다른 하나를 선택하는 것은 컨텍스트에 따라 다릅니다 : 응용 프로그램 유형, 사용 된 기술, 작업 수 등.

서버에서 높은 부하와 같이 일부 이벤트가 발생했을 때 호출 기능이 있습니까?

작업에서 JMX를 사용하여 정보에 액세스하고 모니터링하고 특정 조건 하에서 조치를 시작할 수 있습니다. 그러나 이것은 이벤트 기반이 아닌 더 풀 모드입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top