2013-05-20 3 views
2

응용 프로그램이 코드의 특정 부분 (예 : 특정 시간 및 날짜에 전자 메일을 보내는 코드)을 실행하도록 만드는 방법이 궁금합니다.날짜와 시간을 기반으로 특정 코드 블록을 자동으로 실행하는 방법은 무엇입니까?

다음 질문을 읽었지만 아무도 대답이 정확하지 않습니다. 그래서 나는 오래되어 쉽게 볼 수 없기 때문에 다시 묻기로했습니다. 또한 내 질문은 전자 메일을 보내는 것이 아니라 코드의 일부를 실행하는 것입니다.

send-automatic-mail-on-specific-date-through-java
java-sending-mail-automatically

내가 이렇게 두 프레임 워크를 선택하는 그것을 해결하기 위해 사용해야하는 프레임 워크 상관하지 않습니다.

사용자는 수동으로 할 수 있어야합니다. 사용자가 전자 메일을 보내거나 응용 프로그램에서 미리 알림 알람을위한 타이머를 설정하는 시간을 정의했다고 상상해보십시오.

+1

링크는 어디에 있습니까? –

+0

@MohammadFaisal, – J888

+0

@ J888님께 서 다음 중 하나의 답변을 수락해야합니다. – agpt

답변

2

cron에 연결하는 라이브러리를 사용하는 것이 좋습니다. Cron은 매우 유연하며 특정한 날짜, 간격 또는 어떤 조합으로도 일정을 잡을 수 있습니다. 그래서 그 라이브러리에 연결되는 라이브러리는 아마도 당신이 원하는 것일 것입니다.

아마도 cron에 연결할 수있는 여러 라이브러리가 있지만 cron4j 라이브러리에 대한 경험이 있으며 잘 작동하고 쉽게 사용하기 쉽습니다.

4

특정 시간 간격으로 코드 블록을 실행하는 데 cron 작업을 사용하는 것이 더 나은 옵션이라고 생각합니다. 한편 내 경우에는 더 잘 수행 한 cronmakerQuartz scheduler을 사용할 수 있습니다.

+0

질문이 업데이트되었습니다. – J888

+1

도 동일한 상황을 겪었습니다. 약간의 hickups 후, 그 일하는 멋지게. iOS 장치에 푸시 알림을 예약하는 데 cron 작업을 사용하고 있습니다. – agpt

1

서버 또는 클라이언트인지 여부는 밝히지 않았지만 클라이언트 측 응용 프로그램이 시간을 확인한 다음 약간의 조치를 취하도록하려는 경우 해당 동작을 함수로 정의하고 시간을 확인하고 시간은 특정 기간 내에 맞고 기능이 작동하면 실행됩니다. 이 같은 것 :

document.addEventListener("DOMContentLoaded", function() { 
    var time=new Date().getHours(); 
    if (8 <= time && time <= 14) 
      { 
     yourFunction(); 
      } 
    else 
      { 
     anotherfunction(); 
      } 
    }); 

날짜와 시간이 필요한 경우 변수를 쉽게 조정할 수 있습니다.

2

당신이 Quartz scheduler를 사용해야합니다, 그것을위한

종속성

2 단계에 대한 pom.xml 파일의 항목 : 지금

 <property name="jobClass" value="com.test.schedule.RunScheduleJob" /> 

     <property name="jobDataAsMap"> 
      <map> 
       <entry key="runScheduleTask" value-ref="runScheduleTask" /> 
      </map> 
     </property> 

    </bean>   

    <!-- Cron Trigger --> 
    <bean id="mailTrigger" 
     class="org.springframework.scheduling.quartz.CronTriggerBean"> 

     <property name="jobDetail" ref="runScheduleJob" /> 
     <!-- <property name="cronExpression" value="0 0/2 * * * ?" /> -->  
     <property name="cronExpression" value="1 0 00 * * ?" /> 
     <!-- <property name="cronExpression" value="0 10 16 L * ?" /> --> 

    </bean> 

3 단계처럼 quartz.xml 및 항목을 만들 : 당신은 것입니다 QuartzJobBean을 확장 한 클래스 만들기

public class RunScheduleJob extends QuartzJobBean 
{ 

    private RunScheduleTask runScheduleTask; 


    public RunScheduleJob() { 
     runScheduleTask=new RunScheduleTask(); 
    } 

    public RunScheduleTask getRunScheduleTask() { 
     return runScheduleTask; 
    } 
    public void setRunScheduleTask(RunScheduleTask runScheduleTask) { 
     this.runScheduleTask = runScheduleTask; 
    } 
    protected void executeInternal(JobExecutionContext context)throws JobExecutionException 
{ 
     Trigger tri = context.getTrigger(); 
     if(tri.getName().equalsIgnoreCase("mailTrigger")){ 
      runScheduleTask.sendMailSmsOn(); 
     } 
    } 
} 

4 단계 : 당신은 스프링 프레임 워크 (태그에 따라)를 사용하는 경우 클래스 RunScheduleTask에서 공용 클래스 RunScheduleTask {

private IAdminService adminService; 



    public IAdminService getAdminService() { 
     return adminService; 
    } 
    public void setAdminService(IAdminService adminService) { 
     this.adminService = adminService; 
    } 

    public void sendMailSms{ 
     try{ 

      adminService.sendMailSmsOnBeforeExpirationDate(); 

     }catch (Exception e) { 
      log.error("Error occured in sendMailSmsOnBeforeExpirationDate ", e); 
     } 

    } 
1

모든 메소드를 호출하는 클래스에서, 나는 @Scheduled 주석을 사용하여 생각하는 가장 간단한 방법이 될 것입니다 목표 달성.

관련 문제