2016-11-15 1 views
0

간단한 @Schedule을 사용하려고하므로 나중에 사용할 수 있습니다. 내 웹 응용 프로그램에는 index.html 만 포함되어 있습니다. ./api/test/ EJB가 관리하는 컨트롤러로 이동합니다. 이 컨트롤러에서 @Schedule 주석이있는 메서드를 호출합니다. 하지만이 방법을 이해하는 방법을 모르겠다. runningscript 메서드는 카운터 필드를 하나씩 추가하여 index.html 파일에 숫자 1을 표시합니다. 그러나 숫자는 결코 높지는 않습니다. 모든 sysouts .. 그래서 나는 내 @ 일정이 시작되지 않았을까?@Schedule이 작동하지 않습니다. EJB - Java EE - 웹 응용 프로그램

이 내 두에만 사용 코드 파일은 다음과 같습니다 일정

public class NewClass { 

private int counter = 0; 
private String text = "test"; 

public NewClass() { 

} 

public String getText(){ 
    return text; 
} 

private void setText(String text){ 
    this.text = text; 
} 


@Schedule(hour="*", minute="*", second="*/5") 
public void runningScript() { 
    counter++; 
    System.out.println("*******test runningscript*****"); 
    System.out.println(counter); 
    text = "number : " + counter; 
} 
} 

누군가와

@Path("/test") 
public class controller { 

NewClass test; 

public controller() { 
    test = new NewClass(); 
} 

@GET 
public Response getObservation() { 
    try { 
     //Object to JSON in String 
     test.runningScript(); 
     System.out.println("getObservation"); 
     System.out.println(test.getText()); 
     String jsonInString = test.getText(); 
     return Response.status(200).entity(jsonInString).build(); 
    } catch (Exception ex) { 
     System.out.println("error"); 
     ex.printStackTrace(); 
     return null; 
    } 
} 
} 

클래스 나는이 작업을 얻을 수있는 방법을 아이디어? 나는 수 시간 동안 검색했다 : ss

+0

일반적으로'@ Schedule' 주석이 붙은 메소드를 호출하면 안됩니다. 당신은 무엇을하려하고 있으며, 대신에 무슨 일이 일어나고 있습니까? –

+0

나중에 @schedule으로 예약 된 매 x 초마다 스크립트를 읽고 싶습니다. – Tom

+0

그러나 @schedule의 사용을 테스트하고 있습니다. 그는 매 5 초마다 내 sysouts를 주지도 않는다. 만약 내가 그 방법을 실행한다면? Schedule로 선언 된 메서드를 호출하지 않는 것이 가장 좋은 방법이라면 어떻게 시작해야합니까? – Tom

답변

4

NewClass는 EJB가 아니다. @Schedule은 EJB에서만 작동합니다.

+0

이것은 정답입니다. 다음은 샘플입니다. https://github.com/javaee-samples/javaee7-samples/blob/master/ejb/timer/src/main/java/org/javaee7/ejb/timer/SchedulesTimerBean.java - pingEvent를 로그 출력과 함께 사용하여 로그에서 작동하는지 확인하십시오. – Mike

+0

잘자요. 보다 구체적으로, OP는'컨트롤러'생성자를 제거하고,'@Stateless public class NewClass'를 사용하고,'@EJB NewClass test'를 사용하여 인스턴스를 삽입해야합니다. –

+0

나는 이것을 시도했지만 nvm이라고 생각했다. 정말 고마워 ! – Tom

관련 문제