문제

내 고용주가 실행 중인 Java EE WebSphere 애플리케이션에서 시간 제한 배치 프로세스를 실행하도록 요청했습니다.매일 밤 11시 30분에 특정 수업을 진행하기로 되어 있어요.

저는 Java EE나 WebSphere 서버(또는 개발 환경의 tomcat)에 대해 잘 알지 못해서 여기저기 찾아봤지만 제가 찾은 것은 Java 타이머 클래스에 관한 것뿐이지만 이를 설정하거나 호출하는 방법은 아닙니다. .

web.xml 파일의 편집도 필요한 것 같습니다.

어떤 도움이라도 주시면 감사하겠습니다!

도움이 되었습니까?

해결책

오픈 소스를 살펴봐야 합니다. 석영 라이브러리 오픈심포니에서.사용하기 매우 쉽고 이런 종류의 작업에 적합합니다.

TimerTasks는 미래의 짧은 시간에 무언가를 실행하는 데 가장 적합합니다.그러나 이와 같은 대규모 기간 동안 반복 실행을 수행하는 경우 Quartz가 탁월합니다.파일이나 데이터베이스와 같은 영구 저장소에 예정된 작업 목록을 보관할 수도 있으므로 애플리케이션을 다시 시작해도 예정된 작업이 손실되지 않습니다.

또한 Spring 프레임워크에는 Quartz에 대한 환상적인 추상화가 있습니다.

다른 팁

WebSphere에서는 스케줄러 서비스를 사용하여 Java 클래스의 메소드 실행을 트리거할 수 있습니다.스케줄러는 작업 실행을 예약하기 위한 달력(cron과 유사)을 제공하거나 직접 개발할 수도 있습니다.

다음은 WAS 6.1 문서의 스케줄러를 설명하는 페이지에 대한 링크입니다.

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

EJB 3.1에는 개선된 타이머 서비스뿐만 아니라 사용자 상호 작용 없이 작업을 시작하기 위해 서블릿을 사용할 필요가 없도록 하는 애플리케이션 수명 주기 후크도 포함됩니다.

이는 질문 제목에 대한 답변일 수 있지만 websphere에서 실행되는 레거시 애플리케이션(6개월 이상 전에 작성됨)에 관한 "실제" 질문의 경우 시작 서블릿 및 EJB 타이머 서비스를 사용하는 것이 좋습니다.

J2EE 1.4(EJB 2.1)의 타이머 서비스

EJB 3.0(그리고 가능한 한 빨리 3.1)의 경우 몇 가지 멋진 주석이 있습니다.

다른 건 소개 안 할게요 도서관 정말로 필요하지 않는 한.타이머 서비스는 매일 임의의 작업을 수행하는 데 충분합니다.

HTH,
남자 이름

web.xml에서 시작 시 로드할 서블릿을 구성할 수 있습니다.
통사론:

u003Cservlet servlet-name='hello'n servlet-class='test.HelloWorld'>
<시작 시 로드/>
</서블릿>

이렇게 하면 서블릿의 init 메소드에서 Timer / TimerTask를 설정하여 필요한 모든 작업을 수행할 수 있습니다.TimerTask는 실행할 시기를 예약할 수 있다는 점을 제외하면 스레드와 유사합니다.

Quartz는 표준 JBoss 4.2.x 배포판의 일부입니다.

그리고 많은 작업 없이도 간단한 작업 흐름을 정의할 수 있는 정말 좋은 라이브러리입니다.

WebSphere에서는 스케줄링이 지원되지 않습니다.

Unix를 사용하는 경우 crontab을 사용하여 Websphere 애플리케이션 페이지에 대한 요청을 예약할 수 있습니다.Windows에서는 페이지에 대한 요청을 예약할 수도 있다고 가정합니다.내 crontab에서는 매일 8시 45분에 웹페이지에 대한 요청을 예약합니다.

45 8 * * * 받다 http://www.domain.com/myBatch?securitykey=verysecret

이제 매일 아침 myBatch 서블릿이 호출되며 거기서 그 시간에 수행해야 하는 모든 작업을 수행할 수 있습니다.다른 사람이 이 페이지를 호출하는 것을 방지하고 배치를 시작하기 위해 securitykey 매개변수를 추가했습니다.

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