비동기 요청 디스패처
비동기 요청 디스패처(ARD)는 느린 조작을 논리적으로 분리하고 응답을 완료하는 데 필요한 다른 조작과 동시에 수행할 수 있을 때 서블릿 응답 시간을 개선시킬 수 있습니다. ARD를 사용하면 Java™ 서블릿 프로그래머가 별도의 스레드에서 동일한 요청에 대해 동시에 표준 javax.servlet.RequestDispatcher include 호출을 수행할 수 있습니다. 이러한 javax.servlet.RequestDispatcher include 호출은 동일 스레드에서 순차적으로 완료됩니다. ARD는 또한 낮은 CPU, 데이터 연결을 기다리는 등과 같은 대기 시간이 긴 상황에서도 유용합니다.
대용량 CPU 또는 메모리 요구사항이 있는 경우에는 ARD 단독으로는 이러한 문제를 완화할 수 없습니다. 그러나 원격 요청 디스패처와 함께 사용하면 여러 개의 애플리케이션 서버에서 동시에 수행할 수 있는 하나의 서블릿 요청에 의해 구동된 조작은 단일 서버에서의 자원 수요를 완화하고 시스템이 작동 중지되는 위험 상황을 줄일 수 있습니다.
서블릿, 포틀릿 및 JSP(JavaServer Pages) 파일은 모두 ARD를 사용할 수 있습니다. 이 기능은 동기 요청 디스패치만을 설명하는 Java™ 서블릿 스펙의 요구사항을 넘어서는 확장기능입니다. ARD에는 새로운 채널 체인을 구성하기 위해 HTTP 및 웹 컨테이너 채널 간에 ARD 채널이라는 새 채널이 필요합니다. 이러한 체인은 기존의 기본 호스트 체인에만 해당하고 동일한 포트를 재사용합니다.
각 포함은 클라이언트에 출력을 쓸 수 있으며 유효한 결과를 위해서는 순서가 중요하므로 쓰여진 데이터를 일부 집계해야 합니다. 일반적으로 서블릿은 데이터를 버퍼에 쓰고, 버퍼가 가득차면 클라이언트로 비웁니다. 서버측 집계의 경우 ARD 채널은 현재 버퍼에 플레이스홀더를 작성한 포함이 완료되기 전까지는 비울 수 없습니다.
비동기 포함의 클라이언트측 집계도 지원됩니다. Web 2.0 프로그래머들은 종종 원격 자원을 동적으로 검색 및 집계하기 위해 클라이언트의 웹 브라우저에서 Ajax(Asynchronous JavaScript and XML)를 사용하기도 합니다. 불행하게도 이는 프로그래머가 컨텐츠를 집계하고 새로운 기술을 학습해야 한다는 부담감이 있습니다. 클라이언트측 집계는 필요한 JavaScript를 자동으로 추가하여 페이지를 동적으로 업데이트합니다. 비JavaScript 클라이언트의 경우 ARD를 서버측 집계로 전환할 수 있습니다. 이 또한 결과는 동일합니다. 클라이언트측 집계를 사용할 때에는 비JavaScript 클라이언트를 거부할 수 있습니다.
ARD는 웹 컨테이너 API를 사용하여 고유한 요청 디스패치 로직에 플러그인합니다. 이는 WCCM과 상호작용하여 엔터프라이즈 애플리케이션별 인에이블먼트 상태에 대한 구성 정보뿐만 아니라 글로벌 애플리케이션 서버 설정을 읽습니다. 관리 콘솔과 wsadmin을 사용하여 ARD를 사용 또는 사용 불가능으로 설정할 수 있습니다. 서블릿, 포틀릿 및 JSP 파일은 모두 ARD를 사용할 수 있습니다.