2010-05-12 4 views
1

백그라운드 프로세스를 실행할 필요가있는 요구 사항이 있습니다. 사용자가 애플리케이션에 로그인하면 두 가지 프로세스를 완료해야합니다. 1. 사용자를 인증하고 홈 페이지 으로 이동하십시오. 2. 일부 데이터를 가져 와서 세션에 넣으십시오.백그라운드 프로세스 실행

내가 동시에 할 경우 홈페이지로 이동하는 데 10 분 정도 걸립니다. 대신 인증이 처리되는 동안 두 번째 프로세스가 백그라운드에서 실행되기를 원합니다.

홈페이지에서 두 번째 프로세스의 데이터가 필요하지 않습니다. 세션에서 액세스 할 수있는 다른 페이지에서 필요합니다.

누군가 나를 올바른 방향으로 배치 할 수 있습니까?

감사

+0

이 데이터를 세션에 저장하는 것이 정말 적절한 지 궁금합니다. 일반적으로 성능상의 이유로 큰 데이터 구조를 세션에 저장하는 것은 현명하지 않습니다. http://www.ibm.com/developerworks/websphere/library/bestpractices/store_objects_in_httpsession.html – pkaeding

+0

멀티 스레딩이라고 생각하지 않습니다. 문제; 나는 그것이 디자인 문제라고 생각한다. 10 분 동안 데이터가 쌓이지 않도록 너무 많은 데이터를 세션에 넣을 필요는 없습니다. 또한 데이터를로드하는 동안 10 분 동안 세션을 사용할 수 있습니까? –

답변

1

클래스 extends Thread 또는 implements Runnable을 만들고 실행합니다. Sun tutorial에서 어떻게하는지 배울 수 있습니다. 세션 범위 관리 Bean에서이를 참조하여 다른 페이지에서 액세스 할 수있게하십시오. 말했다


는, 당신이 완전히 10 분 동안 지속 자바의 메모리에 일부 데이터베이스 테이블 을 운반하는 경우로 같은 소리. 그렇게하지 않는 것이 좋습니다. 이것은 매우 비효율적이며 여러 사용자가 동시에 응용 프로그램에 액세스 할 때마다 폭발 할 수 있습니다. 검색/필터/페이징 로직을 추가하고 그에 따라 코드를 작성하면 만 현재 요청을 기반으로 관심 데이터를 쿼리합니다. 또한 Google은 세션에서 레코드를 저장하고 현재 요청에서 10 레코드 만 표시하도록 많은 수의 레코드를 쿼리하지 않습니다. Java가 DB의 역할을 대신하게하지 말고 DB의 능력을 과소 평가하지 마십시오. 제대로 모델링하고 색인을 생성하면 매우 빠릅니다.

+0

답장을 보내 주셔서 감사합니다 Balusc, 내 requirment는 사용자가 제출하지 않고 상위 드롭 다운에서 값을 선택할 때 페이지에 하위 메뉴를 채우는 것입니다. Google 엔지니어는 상위 메뉴의 모든 변경 사항에 대해 페이지를 새로 고치기를 원하지 않습니다. 먼저 관리되는 빈에서 맵에 참조되는 숨겨진 변수를 추가하여 javascript를 사용한다고 생각했습니다. 하지만 이제는 부모 드롭 다운에서 각 값에 대해 최소한 30 개의 웹 서비스 호출이 필요합니다. 그래서 응용 프로그램이 시작되어 세션에 저장 될 때이 웹 서비스 호출을 이동 시키려고했습니다. 하지만 나는 홈 페이지에 들어가기 위해 10 분을 기다리는 것을 원하지 않는다. – Mahi

+0

사용자가 내 웹 사이트를 계속 탐색 할 수있는 동안이 작업이 백그라운드에서 수행되기를 바랍니다. 나는 그것을하기 위해 여러 가지 방법으로 googled하고 이것을 통과했다. (http://www.coderanch.com/t/488860/JSF/java/best-way-do-background-processing) 우리는 Thread를 사용해서는 안된다. 웹 응용 프로그램 개발시 관리가 불가능한 경우 – Mahi

+0

사용자 별 데이터가 아닌 경우 웹 응용 프로그램 시작 중에로드되는 응용 프로그램 범위의 관리 빈에 저장하면됩니다. – BalusC

관련 문제