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. 절차
논리 핸드러를 구현하려면 다음을 수행합니다.
- 처리기에 필요한 모든 43.6절. “핸들러 초기화” 논리를 구현합니다.
- 43.5절. “SOAP 핸들러에서 메시지 처리” 논리를 구현합니다.
- 43.7절. “자주하는 질문” 논리를 구현합니다.
-
getHeaders()
메서드를 구현합니다. - 완료되면 43.8절. “핸들러 종료” 처리기에 대한 논리를 구현합니다.
- 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에서 예외를 이해해야 합니다.