2012-02-05 3 views
2

내가 playframework를 사용하고, 나는 동시 작업과 고군분투의 :playframework : Request.current 작업

나는 방법 Request.current (모듈 FbGraph)를 사용하는 모듈이있다. Job에서이 메소드에 액세스해야하지만 Job은 다른 스레드에서 실행됩니다. 이 스레드에서 Request.currentnull을 반환하고 이로 인해 모듈이 작동하지 않습니다.

현재 요청의 값을 Job으로 전달할 수 있습니까? Request.current은 주 스레드와 동일한 값을 반환합니까? 또는 모듈에서 무언가를 수정하고 그 안에 현재 요청 값을 유지해야합니까?

답변

1

명시 적으로 요청 오브젝트를 Job 클래스에 전달해야합니다.

public class MyJob extends Job<Object> { 
    private Request request; 
    public MyJob() { 
     request = Request.current(); 
    } 
    public void doJob() { 
     // here you use the request object 
    } 
} 

그리고 당신의 MyJob 사용 : 당신이 요청 개체를 전달할 수 있는지 확인하려면 다음 중 하나를해야합니다) Request.current를 (사용하는 다른 모듈의 경우

public static void myAction() { 
    ... 
    new MyJob().now(); 
    ... 
} 

을 다음과 같은 작업 클래스가 있다고 가정 해당 모듈을 사용하거나 컨트롤러 조치 스레드에서 해당 모듈을 사용하십시오.

+0

감사합니다. 모듈을 고칠 필요가 있습니다. –