43.4. 프로토콜 핸들러 구현

43.4.1. 개요

프로토콜 핸들러는 사용 중인 프로토콜에 따라 다릅니다. Apache CXF는 JAX-WS에 지정된 대로 SOAP 프로토콜 핸들러를 제공합니다. SOAP 프로토콜 핸들러는 javax.xml.ws.handler.soap.SOAPHandler 인터페이스를 구현합니다.

예 43.8. “SOAPHandler Synopsis” 에 표시된 SOAPHandler 인터페이스는 메시지에 대한 액세스를 SOAPMessage 개체로 제공하는 SOAP 특정 메시지 컨텍스트를 사용합니다. 또한 SOAP 헤더에 액세스할 수 있습니다.

예 43.8. SOAPHandler Synopsis

public interface SOAPHandler extends Handler
{
  boolean handleMessage(SOAPMessageContext context);
  boolean handleFault(SOAPMessageContext context);
  void close(SOAPMessageContext context);
  Set<QName> getHeaders()
}

SOAP 특정 메시지 컨텍스트를 사용하는 것 외에도 SOAP 프로토콜 핸들러에는 getHeaders() 라는 추가 메서드를 구현해야 합니다. 이 추가 방법은 처리기가 처리할 수 있는 헤더의 QNames를 반환합니다.

43.4.2. 절차

논리 핸드러를 구현하려면 다음을 수행합니다.

  1. 처리기에 필요한 모든 43.6절. “핸들러 초기화” 논리를 구현합니다.
  2. 43.5절. “SOAP 핸들러에서 메시지 처리” 논리를 구현합니다.
  3. 43.7절. “자주하는 질문” 논리를 구현합니다.
  4. getHeaders() 메서드를 구현합니다.
  5. 완료되면 43.8절. “핸들러 종료” 처리기에 대한 논리를 구현합니다.
  6. 43.9절. “핸들러 릴리스” 의 논리를 실행하기 전에 처리기의 리소스를 삭제합니다.

43.4.3. getHeaders() 메서드 구현

예 43.9. “SOAP.getHeaders() 메서드” 에 표시된 getHeaders() 는 Apache CXF 런타임에서 처리기가 처리할 책임이 있는 SOAP 헤더를 보여줍니다. 처리기에서 이해할 수 있는 각 SOAP 헤더의 외부 요소의 QNames를 반환합니다.Returns the QNames of the outer element of each SOAP header the handler understands.

예 43.9. SOAP.getHeaders() 메서드

Set<QName>getHeaders

대부분의 경우 null을 반환하는 것만으로 충분합니다. 그러나 애플리케이션에서 SOAP 헤더의 mustUnderstand 특성을 사용하는 경우 애플리케이션의 SOAP 핸들러에서 이해하는 헤더를 지정하는 것이 중요합니다. 런타임은 등록된 모든 핸들러가 true 로 설정된 mustUnderstand 특성이 있는 헤더 목록에 대해 이해하는 SOAP 헤더 세트를 확인합니다. 플래그가 지정된 헤더 중 하나라도 이해된 헤더 목록에 없는 경우 런타임은 메시지를 거부하고 SOAP에서 예외를 이해해야 합니다.