2013-06-18 2 views
0

을 달성하려면 어떻게합니까? (true)은 응용 프로그램 서버와 유사합니까? 내가 몇 초마다 내 영구 데이터를 변경하고, 각주기해야하는 경우
, 절차 A는, B는 C를 호출한다 : 하나 개의 솔루션을 제공하는 정보와응용 프로그램 서버에서 동작하는 동안 (true)

public class Runner 
{  
    List values; 

    public void repeat() 
    { 
     while (true) 
     { 
      changeSomeDataA(); 
      changeSomeDataB(); 
      changeSomeDataC(); 
     } 
    } 
} 
+1

변화, 데이터, 시간과주기를 정의하십시오. – weltraumpirat

+0

당신은 백그라운드에서 돌아가고 잠자고 잠시 깨어있는 것을 원하십니까? 몇 분/시간에 한 번씩 달리기를 원하십니까? –

+0

은 응용 범위가 지정된 bean과 같은 싱글 톤을 작성하고 eager 속성을 사용하여 응용 프로그램으로 시작할 수 있습니다. 타이밍을 위해서 간단히 java sleep()을 사용하십시오. – sotix

답변

1

EJB의 타이머 서비스에 @Schedule 주석을 사용하십시오. 같은 자세한 내용

@Schedule(second="*/3", minute="*", hour="*") 
    public void automaticChangeOnTimer() { 
     changeSomeDataA(); 
     changeSomeDataB(); 
     changeSomeDataC(); 
     logger.info("Automatic called the method"); 
    } 

는 다음 링크에서 볼 :

http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

-1

하고 있다고 잠들지 스레드를 시작합니다 5 초는 예를 들어, 다시 메소드를 호출하기 전에 : 당신이 스레드 내에서 실행할 수 있도록

// init (e.g. with servlet init()) 
Runner r = new Runner(); 
Thread t = new Thread(r); 
t.start(); 

// and later (e.g. with servlet destroy()) 
r.stopRunning(); 
t.interrupt(); 
t.join(); 

그리고 당신의 러너를 당신은 조금을 업데이트해야합니다.

public class Runner implements Runnable 
{  
    List values; 
    boolean running = true; 

    public void run() 
    { 
     while (running) 
     { 
      changeSomeDataA(); 
      changeSomeDataB(); 
      changeSomeDataC(); 

      try { 
       Thread.sleep(5000); 
      } catch(InterruptedException e) { 
       // we do not really need to react here, do we? 
      } 
     } 
    } 
} 

실수로 가비지 수집되지 않는 개체 (예 : Servlet 인스턴스)에 Runner 및 Thread에 대한 참조를 저장해야합니다. 물론 멋지게 포장하십시오.

+2

OP가 Java EE 서버의 컨텍스트에서이 질문을하고 있습니다. 평생 장시간 실행되는 Java EE 서버에서 관리되지 않는 스레드를 생성하는 것은 매우 나쁜 습관입니다. 대신 Java EE 제공 기능을 사용해야합니다. EJB API. – BalusC

0

Java EE 사양은 특정 기간에 비즈니스 논리를 실행하는 데 유용한 EJB 타이머를 생성 할 수있는 기능을 제공합니다.

각 EJB 버전 (2.1, 3.0, 3.1)에는이 구성 요소를 구현할 수있는 형식의 변경 사항이 포함되어 있으므로 Java 버전에 따라 예제 코드를 검색해야합니다.

관련 문제