30.2. 프로토콜 Faults


30.2.1. 개요

요청 처리 중에 오류가 발생하면 프로토콜 예외가 발생합니다. 모든 동기 원격 호출은 프로토콜 예외를 throw할 수 있습니다. 근본적인 원인은 소비자의 메시지 처리 체인 또는 서비스 공급자에서 발생합니다.

JAX-WS 사양은 일반 프로토콜 예외를 정의합니다. 또한 SOAP 관련 프로토콜 예외 및 HTTP 특정 프로토콜 예외를 지정합니다.

30.2.2. 프로토콜 예외 유형

JAX-WS 사양은 세 가지 유형의 프로토콜 예외를 정의합니다. catch하는 예외는 애플리케이션에서 사용하는 전송 및 바인딩에 따라 다릅니다.

표 30.2. “일반 프로토콜 예외의 유형” 세 가지 유형의 프로토콜 예외와 이러한 예외가 throw되는 경우에 대해 설명합니다.Describes the three types of protocol exception and when they are thrown.

표 30.2. 일반 프로토콜 예외의 유형
예외 클래스Thrown

javax.xml.ws.ProtocolException

이 예외는 일반적인 프로토콜 예외입니다. 사용 중인 프로토콜에 관계없이 잡을 수 있습니다. SOAP 바인딩 또는 HTTP 바인딩을 사용하는 경우 특정 오류 유형으로 캐스팅할 수 있습니다. HTTP 또는 JMS 전송과 함께 XML 바인딩을 사용하는 경우 일반 프로토콜 예외를 보다 구체적인 오류 유형으로 캐스팅할 수 없습니다.

javax.xml.ws.soap.SOAPFaultException

이 예외는 SOAP 바인딩을 사용할 때 원격 호출에 의해 발생합니다.This exception is thrown by remote invocations when using the SOAP binding. 자세한 내용은 “SOAP 프로토콜 예외 사용” 에서 참조하십시오.

javax.xml.ws.http.HTTPException

이 예외는 Apache CXF HTTP 바인딩을 사용하여 RESTful 웹 서비스를 개발할 때 throw됩니다. 자세한 내용은 VI 부. RESTful 웹 서비스 개발 에서 참조하십시오.

30.2.3. SOAP 프로토콜 예외 사용

SOAPFaultException 예외는 SOAP 오류를 래핑합니다. 기본 SOAP 오류는 fault 필드에 javax.xml.soap.SOAPFault 오브젝트로 저장됩니다.

서비스 구현에서 애플리케이션에 대해 생성된 사용자 지정 예외에 맞지 않는 예외를 throw해야 하는 경우 예외 작성자를 사용하여 SOAPFaultException에서 오류를 래핑하고 사용자에게 다시 throw할 수 있습니다. 예 30.1. “SOAP 프로토콜 예외 발생” 메서드가 잘못된 매개 변수를 전달하는 경우 SOAPFaultException을 만들고 throw하기 위한 코드를 표시합니다.Shows code for creating and throwing a SOAPFaultException if the method is passed an invalid parameter.

예 30.1. SOAP 프로토콜 예외 발생

public Quote getQuote(String ticker)
{
  ...
  if(tickers.length()<3)
  {
    SOAPFault fault = SOAPFactory.newInstance().createFault();
    fault.setFaultString("Ticker too short");
    throw new SOAPFaultException(fault);
  }
  ...
}

소비자가 SOAPFaultException 예외를 catch하면 래핑된 SOAPFault 예외를 검사하여 예외의 기본 원인을 검색할 수 있습니다. 예 30.2. “SOAP 프로토콜 예외에서 Fault를 받기” 와 같이 SOAPFault 예외는 SOAPFaultException 예외의 getFault() 메서드를 사용하여 검색됩니다.

예 30.2. SOAP 프로토콜 예외에서 Fault를 받기

...
try
{
  proxy.getQuote(ticker);
}
catch (SOAPFaultException sfe)
{
  SOAPFault fault = sfe.getFault();
  ...
}
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.