30.2. 프로토콜 폴트


30.2.1. 개요

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

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

30.2.2. 프로토콜 예외 유형

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

표 30.2. “일반 프로토콜 유형 예외” 프로토콜 예외의 세 가지 유형과 이러한 예외가 throw되는 시기에 대해 설명합니다.

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

javax.xml.ws.ProtocolException

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

javax.xml.ws.soap.SOAPFaultException

이 예외는 Cryostat 바인딩을 사용할 때 원격 호출에 의해 발생합니다. 자세한 내용은 “Cryostat 프로토콜 예외 사용” 에서 참조하십시오.

javax.xml.ws.http.HTTPException

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

30.2.3. Cryostat 프로토콜 예외 사용

CryostatFaultException 예외는 Cryostat 오류를 래핑합니다. 기본 Cryostat 오류는 fault 필드에 javax.xml.soap.SOAPFault 개체로 저장됩니다.

서비스 구현에서 애플리케이션에 대해 생성된 사용자 지정 예외에 맞지 않는 예외를 throw해야 하는 경우 예외 작성자를 사용하여 오류를 래핑하고 소비자로 다시 throw할 수 있습니다. 예 30.1. “ESP 프로토콜 예외 발생” 메서드가 잘못된 매개 변수를 통과한 경우 CryostatFaultException을 생성하고 throw하는 코드를 표시합니다.

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

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

소비자가#159FaultException 예외를 catch하면 래핑된 CryostatFault 예외를 검사하여 예외의 기본 원인을 검색할 수 있습니다. 예 30.2. “Fault from a Cryostat Protocol Exception” 에 표시된 대로 CryostatFault 예외는 CryostatFaultException 예외의 getFault() 메서드를 사용하여 검색됩니다.

예 30.2. Fault from a Cryostat Protocol Exception

...
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.