2014-04-11 4 views
0

Worklight Server에서 정기적 인 하우스 키핑을 수행하는 방법을 찾고 있습니다. 단순화 된 시나리오 :Worklight Server에서의 배경 작업

우리는 백엔드 시스템과 통신하는 어댑터가 있습니다. 사용자가 Worklight로 인증 할 때 각 서비스 호출시 백엔드에 전달되는 자격 증명을 만듭니다. 일정 기간 동안 사용하지 않으면 해당 자격 증명이 오래 될 수 있습니다. 따라서 우리가 원하는 것은 모든 활성 세션에 대한 "하트 비트"입니다. 사용자가 인증 할 때 자격 증명을 숨기는 싱글 톤 Java 객체가 있습니다. 원하는 작업은 백그라운드 작업자 스레드를 사용하여 자격 증명 목록을 반복하고 서버에 하트 비트 호출을 수행하는 것입니다. 우리가 심장 박동을 유발 어떻게 :

나는 질문은이

// in business service adapter 

    businessMethod(){ 
     make service call using credentials from user's Worklight session 
    } 


    // in authentication adapter, normal adapter authentication methods and a heartbeat 

    authentication(){ 
     get back-end credentials 
     store credentials in user's session 
     stash credentials in singleton 
    } 

    // how do we cal this heartbeat every x min 
    heartbeat(){ 
     for each credential in singleton stash 
      make heartbeat call to server keeping credential alive 
    } 

같은 어댑터 방법으로 끝낼. 거의 작동하는 Java TimerTask를 사용해 보았습니다. 자바 타이머 태스크 (TimerTask)가 내 심장 박동을 호출 할 수 있도록 준비 할 수 있습니다. 문제는 TimerTask에서 실행할 때 일반 Worklight Server 환경이 없으므로 WL.Server.invokeProcedure()를 호출하면 예외가 발생하고 이에 대해 생각하면 정상 Worklight API에 대한 액세스 권한이 없을 것입니다. 효과적으로 외국 스레드.

우리는 Worklight 6.1을 사용하여 WebSphere Liberty 서버에 배포하고 있습니다. 현재 heartbeat() 메소드를 주기적으로 호출하는 외부 미니 애플리케이션이나 쉘 스크립트를 작성하는 것이 가장 좋습니다.

더 좋은 제안이 있으십니까?

답변

1

마음에 드는 백엔드가 좋은 아이디어인지 모르겠다. 또한 보안상의 가능성이 있다고 생각합니다. WL Server와 백엔드 세션 시간 초과를 구성해야합니다.

실제 질문에 대한 답변 - EventSource를 사용하여 백그라운드 작업을 만들 수 있습니다. 여기를 참조하십시오 - https://www.ibm.com/developerworks/community/blogs/worklight/entry/configuring_a_polling_event_source_to_send_push_notifications?lang=en

+0

답변 해 주셔서 감사합니다. 일반적으로 나는주의 깊게 동의합니다.이 특별한 경우에있어서, 심장 박동은 기존의 유효성이 보장되고 움직이지 않는 보안 아키텍처의 정식 요구 사항입니다. – djna

0

데이빗, 질문을 직접 처리 할 수 ​​있을지 모르겠다. 심장 박동만을 겨냥하고 있는지, 아니면 어댑터 레이어에서 몇 가지 맞춤 작업을 수행할지 여부를 잘 모르겠다. 하트 비트가 수신됩니다 (근본적인 목적에 대해 좀 더 명확하게 설명 할 수 있습니까?). 하지만 Worklight 자체에 기본 제공 하트 비트 개념이 있다는 것을 알고 있습니까? WL.Client.init()에 대한 호출의 일부로 heartBeatIntervalInSec 값으로 구성합니다. 자세한 내용은 the documentation을 참조하십시오.

+0

여기서 우리는 WL 서버에서 백엔드로 하트 비트를 말합니다. 클라이언트가 작동하지 않는 동안 신임 정보를 유지하는 특별한 사용 사례가 있으므로 언급 한 WL 클라이언트 하트 비트가 발생하지 않습니다. – djna