Servlet 3.1 기능 함수

WebSphere® Application Server TraditionalServlet 3.1 스펙을 지원합니다. 강조표시된 함수의 분류 및 설명을 보십시오.

새 기능 새 기능:
제품은 Servlet 3.1 함수를 지원합니다.

모든 함수의 설명은 Java Servlet 스펙에서 제공되며 제품 문서에서 설명되지 않습니다. 그러나, Servlet 3.1 함수에 대한 추가 고려사항은 다음과 같습니다.

newfeat

비동기 I/O

비블로킹 읽기가 시작될 때 나머지 요청 수명 동안의 모든 자원이 API를 호출할 수 없음을 지정하는 Servlet 3.1 기능으로, 블로킹 읽기가 될 수 있습니다. 예를 들어, 읽기 리스너가 자원에 의해 설정된 후 POST 요청의 경우, getParameter()getPart() API에 대한 모든 후속 호출은 IllegalStateException이 됩니다.

비동기 서블릿에 대해 작업할 때 AsyncContext.setTimeout API로 제한시간을 설정하십시오. 그렇지 않으면 30초 같은 컨테이너 기본값이 사용됩니다. ServletRequest을 사용하여 비동기가 시작할 때마다 제한시간이 재설정됩니다. StartAsync API가 호출되고 AsyncContext.complete API가 마지막으로 비동기가 시작한 이후의 제한시간 기간 안에 호출되지 않을 때 만기합니다. 제공되는 비동기 I/O 지원을 사용할 때 비동기 I/O가 완료하도록 허용하기 위해 AsyncContext.setTimeout API로 제한시간 값을 설정하십시오. 완료는 환경이나 네트워크 속도 같은 다른 외부 요인에 종속됩니다.

업그레이드 처리

업그레이드 처리는 비블로킹 읽기 및 쓰기 기능을 갖는 Servlet 3.1 기능입니다. 읽기 또는 쓰기 조작이 비동기일 때, 서버가 조작이 완료하길 기다리는 시간에 대한 한계가 없습니다. server.xml 파일에서 upgradereadtimeoutupgradewritetimeout 같은 웹 컨테이너 사용자 정의 특성으로 제한시간을 설정할 수 있습니다. 5초 제한시간의 다음 예를 참조하십시오.
<webContainer upgradeReadTimeout="5000" />
<webContainer upgradeWriteTimeout="5000" />

요청이 비동기 서블릿에 의해 처리되고 있을 때 Servlet 3.1을 위한 업그레이드 기능을 사용하여 요청이 업그레이드되지 않아야 합니다.

업그레이드를 위해 Servlet 3.1 기능을 지원하는 애플리케이션은 클라이언트와 해당 업그레이드를 호스트하는 애플리케이션 사이에 요청의 연결이 열려 있어야 합니다. 업그레이드 처리가 그의 핸들러나 ReadListener 또는 WriteListener 같은 임의의 다른 자원에서 완료될 때 애플리케이션이 WebConnection close()를 시작하지 않는 경우, TCP 연결은 서버가 재순환할 때까지 열려 있습니다.

Servlet 3.1 기능에서 UpgradeHandler 및 ReadListener를 사용할 때, ReadListener.onAllDataRead 메소드는 클라이언트가 업그레이드된 애플리케이션을 호스트하는 서버에 대한 연결을 닫을 때만 호출됩니다. onReadListener.onAllDataRead를 위한 Javadoc가 다음 메시지를 리턴합니다.
현재 요청에 대한 모든 데이터를 읽을 때 호출되었습니다.
업그레이드 경우에 업그레이드된 데이터가 HTTP가 본문 데이터를 요청하는 방법에서 제한되지 않기 때문에 서버는 데이터의 끝을 모릅니다. 클라이언트 연결이 닫히는 시기와는 별도로 데이터 끝에 대한 판별이 없습니다.

양식 기반 인증

성공적으로 인증한 후 클라이언트는 원래 요청의 자원으로 경로 재지정됩니다. Servlet 3.1 스펙은 다음과 같이 지정합니다. "경로 재지정된 요청의 HTTP 메소드의 예측 가능성을 개선하기 위해 컨테이너는 303 (SC_SEE_OTHER) 상태 코드를 사용하여 경로 재지정해야 합니다. HTTP 1.0 사용자 에이전트와의 상호 운용성이 필요한 경우는 예외이며, 이 경우 302 상태 코드가 사용되어야 합니다." Servlet 3.1 기능은 HTTP 1.0 사용자 에이전트와의 상호 운용성을 유지하며 항상 302 상태 코드를 사용합니다. 보안을 위한 Servlet 3.1 구성에 대한 자세한 정보는 Servlet 3.1 구성 주제를 읽으십시오.

대형 POST 데이터

ServletRequest.getContentLengthLong() API의 추가는 Integer.MAX_VALUE보다 큰 길이의 POST 데이터 수신 지원이 필요하며 단일 바이트 배열 또는 문자열에서 완전히 수용될 수 없습니다.

이 추가는 문자열 또는 byte[]로 컨텐츠를 리턴하는 API를 사용하는 POST 데이터 컨텐츠를 얻을 때 영향을 줍니다. 예를 들어, 매개변수 액세스를 위한 javax.servlet.ServletRequest 메소드:
String    getParamter(String name)
String[]  getParameterValues()
Map<String,String> getParameterMap()

결합될 때 Integer.MAX_VALUE보다 더 큰 길이를 갖는 복수 매개변수를 포함하는 POST 데이터를 보낼 수 있습니다. 그러나, 각 개별 매개변수 이름과 매개변수 값은 길이가 Integer.MAX_VALUE보다 작아야 합니다.

많은 양의 POST 데이터 전송은 다음의 추가 고려사항을 포함합니다.
  • 길이가 Integer.MAX-VALUE보다 작은 청크 단위로 POST 데이터를 보내야 합니다.
  • 매개변수나 파트 같이 웹 컨테이너에 의해 처리되는 POST 데이터는 처리가 시작하기 전에 완전히 읽어져야 합니다. POST 데이터는 웹 컨테이너 처리가 성공하기 위해서는 POST 데이터 크기의 두 배에 해당하는 메모리가 필요할 수 있기 때문에 대형 POST 데이터의 경우 상당한 메모리 요구사항을 부과할 수 있습니다.

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_servlet31
파일 이름:cweb_servlet31.html