2010-12-18 6 views
0

나는 데이터베이스에 저장된 시간 값을 포함한 값을 기반으로 메일을 보내는 방법을 생각하고 있습니다. 내가 생각할 수있는 한 가지 방법은 EJB @Timeout 주석을 사용하는 것이지만 EJB를 실행하기 전에 EJB가 이러한 타이머를 저장하는 방법을 알지 못합니다. 너무 많은 메모리를 소비하지 않습니까? 다른 방법은 주기적으로 데이터베이스를 검사하고 db의 값이 일치하면 스레드를 작성하여 전자 메일을 전송하는 것입니다. 다음 방법은 트리거를 사용하여 데이터베이스에서 Java 코드를 실행하는 것입니다. 이러한 접근법의 장단점은 무엇입니까? 다른 (더 나은) 접근 방법이 있습니까?"데이터베이스에서"이메일을 보내십시오

+0

당신은 그것이 약간 혼란 아마 더 적은 사람들이 당신의 질문을 읽고 (따라서 답) 원인으로이 질문의 이름을 변경하는 것을 고려할 수 있습니다 간주한다. 더 나은 제목은 '이메일 발송 일정 잡기를위한 가능한 해결책'또는 그와 비슷한 것일 수 있습니다. – Tim

답변

0

응용 프로그램에서 시간 초과/예정된 이벤트가 필요한 경우 EJB 타이머 서비스 (실제로 EJB를 사용하는 경우)를 사용하거나 Quartz 예약 서비스를 사용하는 것이 가장 좋습니다. 데이터베이스 트리거는 귀하의 경우에 가장 적합한 솔루션이라고 생각하지 않습니다. 트리거는 일반적으로 특정 이벤트 (예 : 업데이트 또는 레코드 삽입)가 발생했을 때만 실행되며 귀하의 질문에서 공제 할 수있는 한도 내에서 확인해야합니다. 데이타베이스의 값에 따라 매번 데이타베이스를 보냅니다. 따라서 전자 메일을 보내므로 삽입 또는 업데이트를 확인할 필요가 없습니다.

앞서 언급했듯이 EJB를 이미 사용하고 있다면 EJB 타이머 서비스가 문제의 가장 쉬운 해결책이라고 생각합니다. JEE5를 사용하는 경우 JEE5 timer service tutorial을 확인하고 JEE6을 사용하는 경우 JEE6 timer service tutorial을 확인하십시오. J2EE 버전 1.4도 타이머 서비스를 가지고 있지만 그 경우 Quartz 스케줄링 서비스를 사용하게된다. EJB를 사용하지 않는 경우 항상 Quartz scheduling service을 사용할 수 있습니다.

EJB Timer 서비스와 Quartz 스케쥴링 서비스를 사용하면 정의 할 수있는 일정에 따라 호출되는 메소드 및/또는 클래스를 쉽게 정의 할 수 있습니다 (예 : 매시간, 매분 또는 매 5 초마다). 그 달의 첫번째 월요일. 이렇게하면 예약 서비스에서 데이터베이스를 확인한 다음 필요한 경우 전자 메일을 보내는 작성된 메서드를 호출 할 수 있습니다. 두 솔루션 모두 사용하기가 쉽고 리소스 사용량이 매우 적기 때문에 너무 많은 메모리를 소비하는 것을 두려워 할 필요가 없습니다.

종류는

관련 문제