2014-02-18 2 views
1

Apache CXF Rest 서비스에서 요청 및 응답 크기를 바이트 단위로 가져 와서 metrics db에 기록하려면 어떻게해야합니까? "content-length"는 옵션이 아니며 내 메시지에서 이러한 헤더를 찾을 수 없습니다. RawSize가 필요합니다. 예를 들어 Wireshark에서 얻을 수있는 충분한 양이 필요합니다. 예를 들어, http 세션의 tcp 덤프를 만들 때.Apache CXF RS 요청 및 응답 크기

+0

그 질문은 CXF 관련이없는 것처럼 보이지만 부하 서블릿과 서블릿 컨테이너에. 여기에 몇 가지 대답을 발견 http://stackoverflow.com/questions/1836760/is-there-a-way-to-get-raw-http-request-stream-from-java-servlet-handler –

답변

0

링크에서 4.4 메시지 길이를 참조하십시오 전송 인코딩 및 HTTP/HTTP 대 1.0 대 http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html

콘텐츠 길이/1.1

는 HTTP 헤더를 & 전송을 이해하기.

  1. w.r.t. 요청 메시지, Content-Length는 클라이언트 측 전송에 의해 설정됩니다. 따라서 Content-Length를 설정할지 여부는 요청자의 결정에 달려 있습니다.

  2. w.r.t 응답 메시지, 일반적으로 cxf-rs 끝점이 배포 된 서버를 기반으로합니다. Tomcat은 기본적으로 Content-Length를 전송합니다. 심지어 당신이 수동으로 다음과 같이 응답 헤더의 콘텐츠 길이를 설정할 수 있습니다

    공공 응답 GetData의() {

    주소 데이터 = 새 주소 ("런던", "UK"); // 도메인 모델
    // 주소에는 두 개의 속성이 있습니다. 도시 및 국가 문자열 유형 return Response.ok(). entity (data) .type ("application/json"). header (HttpHeaders.CONTENT_LENGTH, data.toString)).짓다();

    }