Sun Java System Application Server 9.1 관리 설명서

HTTP Listener

가상 서버마다 하나 이상의 HTTP Listener를 통해 서버와 클라이언트 간의 연결을 제공합니다. 각 HTTP Listener는 IP 주소, 포트 번호, 서버 이름 및 기본 가상 서버를 가진 수신 소켓입니다.

HTTP Listener의 포트 번호와 IP 주소의 조합은 고유해야 합니다. 예를 들어, IP 주소를 0.0.0.0으로 지정하면 HTTP Listener를 시스템의 지정된 포트에 구성된 모든 IP 주소에서 수신할 수 있습니다. 또는 HTTP Listener에서 각 Listener에 대해 고유한 IP 주소를 지정할 수 있지만 동일한 포트를 사용합니다.

HTTP Listener는 IP 주소와 포트 번호의 조합이므로 동일한 IP 주소와 다른 포트 번호(예: 1.1.1.1:8081 및 1.1.1.1:8082)를 갖거나 다른 IP 주소와 동일한 포트 번호(예: 1.1.1.1:8081 및 1.2.3.4:8081, 시스템이 해당 주소에 모두 응답하도록 구성되어 있는 경우)를 갖는 여러 HTTP Listener가 있을 수 있습니다.

그러나 특정 포트에서 모든 IP 주소에서 수신하는 0.0.0.0 IP 주소를 HTTP Listener에서 사용할 경우, 같은 포트에서 특정한 IP 주소를 수신하는 추가 IP 주소를 위한 HTTP Listener를 만들 수 없습니다. 예를 들어, 한 개의 HTTP Listener가 0.0.0.0:8080(포트 8080의 모든 IP 주소)을 사용하면 다른 HTTP Listener는 1.2.3.4:8080을 사용할 수 없습니다.

Application Server를 실행 중인 시스템은 대개 하나의 IP 주소만 액세스하기 때문에 HTTP Listener는 대개 0.0.0.0 IP 주소와 다른 포트 번호를 사용합니다. 각 포트 번호는 다른 용도에 사용됩니다. 시스템이 둘 이상의 IP 주소에 액세스할 경우 각 주소를 다른 용도로 사용할 수 있습니다.

기본적으로 Application Server가 시작되면 다음과 같은 HTTP Listener를 갖고 있습니다.

이러한 모든 Listener는 IP 주소 0.0.0.0과 Application Server 설치 중에 HTTP 서버 포트 번호로 지정한 포트 번호를 사용합니다. Application Server가 기본 포트 번호 값을 사용하면 http-listener-1은 포트 8080을 사용하고 http-listener-2는 포트 8181을 사용하며 admin-listener는 포트 4848을9를 사용합니다.

각 HTTP Listener에는 기본 가상 서버가 있습니다. 기본 가상 서버는 호스트 구성 요소가 HTTP Listener와 연결된 가상 서버와 일치하지 않는 모든 요청 URL을 HTTP Listener가 라우팅하는 서버입니다. 가상 서버는 http-listeners 속성에 HTTP Listener를 나열하여 HTTP Listener와 연결합니다.

또한 HTTP Listener의 억셉터 스레드 수를 지정합니다. 억셉트 스레드는 연결을 기다리는 스레드입니다. 스레드는 연결을 승인하고 이 연결을 작업자 스레드에서 선택할 수 있도록 연결 대기열이라고 하는 대기열에 둡니다. 새로운 요청이 있을 때 항상 사용할 수 있도록 억셉터 스레드를 충분히 구성합니다. 그러나 시스템에 많은 부담을 주지 않도록 적당히 구성합니다. Application Server에서는 억셉터 및 요청 처리(작업자) 스레드 사이에 구분이 없고, 각 HTTP Listener 스레드가 요청의 수락 및 처리를 담당합니다. 이 때문에 Application Server 기본 구성에서 HTTP Listener에는 50개의 억셉터 스레드가 사용됩니다. 연결 대기열에는 억셉터 스레드에서 수락한 새 연결과 연결 유지 연결 관리 하위 시스템이 관리하는 지속성 연결이 모두 포함됩니다.

요청 처리 스레드 집합은 연결 대기열에서 들어오는 HTTP 요청을 검색하고 요청을 처리합니다. 이 스레드는 헤더를 구문 분석하고 해당하는 가상 서버를 선택한 다음 요청 처리 엔진을 실행하여 요청을 서비스합니다. 처리할 요청이 더 이상 없지만 연결에서 HTTP/1.1을 사용하거나 Connection: keep-alive 헤더를 전송하여 지속성을 유지할 수 있는 경우 요청 처리 스레드에서는 연결이 유휴 상태인 것으로 가정하고 그 연결을 연결 유지 연결 관리 하위 시스템으로 전달합니다.

연결 유지 하위 시스템은 정기적으로 유휴 연결을 폴링하여 나중에 처리할 수 있도록 작업이 있는 연결을 연결 대기열에 넣어둡니다. 여기에서 요청 처리 스레드는 다시 연결을 검색하고 요청을 처리합니다. 연결 유지 하위 시스템은 수 만개의 연결을 관리할 수 있기 때문에 다중 스레딩되어 있습니다. 연결 개수를 더 작은 하위 집합으로 나누는 효율적인 폴링 기술을 사용하여 요청이 준비된 연결과 닫힌 것으로 간주해도 될 정도로 허용 가능한 최대 연결 유지 시간을 초과한 것으로 충분히 유휴 상태였던 연결을 확인합니다.

HTTP Listener의 서버 이름은 서버가 리디렉션의 일부로 클라이언트에 전송한 URL에 표시되는 호스트 이름입니다. 이 속성은 서버에서 자동으로 생성하는 URL에 영향을 주지만, 서버에 저장된 디렉토리 및 파일의 URL에는 영향을 주지 않습니다. 서버에서 별칭을 사용하는 경우 이 이름은 대개 별칭 이름입니다. 클라이언트가 Host: 헤더를 보내면 호스트 이름이 리디렉션에서 HTTP Listener의 서버 이름 값을 대체합니다.

원래 요청에 지정된 것과는 다른 포트 번호를 사용하도록 리디렉션 포트를 지정합니다. 다음 상황 중 하나에서 리디렉션이 발생합니다.

HTTP Listener에 대한 보안 활성화 여부 및 사용한 보안 종류(예: SSL 프로토콜 및 암호화)도 지정합니다.

Application Server에 배포된 웹 응용 프로그램에 액세스하려면 웹 응용 프로그램에 지정된 컨텍스트 루트와 함께 URL http://localhost:8080/(보안 처리된 응용 프로그램일 경우 http://localhost:8080/)을 사용합니다. 관리 콘솔에 액세스하려면 URL https://localhost:4848/ 또는 http://localhost:4848/asadmin/(기본 컨텍스트 루트)을 사용합니다.

가상 서버에서 기존 HTTP Listener를 지정해야 하고 다른 가상 서버에서 이미 사용 중인 HTTP Listener는 지정할 수 없기 때문에 새로운 가상 서버를 만들기 전에 최소한 하나의 HTTP Listener를 만들어야 합니다.