LENA는 주요 사용 패턴인 AJP 프로토콜과 동기 처리 환경에 최적화되어 있고, LENA v 1.3.4.1까지는 기본적으로 LENA의 Valve는 asyncSupported="false"로 적용되어 있었다고 합니다. (1.3.4.2 버전부터는 default값이 true로 변경)
1.3.4.1 이하 버전의 LENA 환경에서 비동기 처리를 사용하려면, LENA의 진단 및 트레이싱 기능을 강화하기 위해 추가되어 있는 사용자 정의 Valve(DiagnosticsPreActionValve, TraceValve) 설정에 asyncSupported="true"옵션을 추가해야 합니다.
DiagnosticsPreActionValve: 장애 진단 및 대응(요청 리다이렉션 등)을 처리하는 Valve
TraceValve : 세션 및 네트워크 추적 기능을 처리하는 Valve
기본값으로 설정되어 있는 환경에서 비동기 처리 요구 시, 아래와 같은 오류가 발생할 수 있습니다.
에러 문구 예시)
Async support must be enabled on a servlet and for all filters involved in async request processing.
혹은
A filter or servlet of the current chain does not support asynchronous operations
동기 요청 환경에서는 asyncSupported="true" 설정이 동작에 영향을 미치지 않습니다.
비동기 처리를 위한 설정 방법
비동기 요청을 사용하는 애플리케이션의 경우, 해당 애플리케이션이 배포되어 있는 LENA WAS 인스턴스의 conf 디렉토리 하위에 있는 server.xml 또는 context.xml에 asyncSupported="true"를 명시해야 합니다.
아래의 세부 설정 방법을 참고하여 해당 옵션 추가를 통해 Async support를 활성화합니다.
1. server.xml 설정
기존 설정:
<Valve className="argo.server.valves.DiagnosticsPreActionValve" enablePreAction="true"/>변경 예시:
<Valve className="argo.server.valves.DiagnosticsPreActionValve" enablePreAction="true" asyncSupported="true"/>
2. context.xml 설정
기존 설정:
<Valve className="argo.server.valves.TraceValve" directory="${log.home}" prefix="trace_${was_cname}_" suffix=".log"/>변경 예시:
<Valve className="argo.server.valves.TraceValve" directory="${log.home}" prefix="trace_${was_cname}_" suffix=".log" asyncSupported="true"/>
Session Clustering 사용 시 Zodiac Valve 추가 처리 필요
기존 설정:
<Valve className="zodiac.cluster.ZodiacValve"/>변경 예시:
<Valve className="zodiac.cluster.ZodiacValve" asyncSupported="true"/>