HTTP 및 SOAP 노드 사용 시 문제점 해결

여기서 제공하는 조언을 사용하면 HTTP 및 SOAP 노드를 포함하는 웹 서비스 메시지 플로우를 개발할 때 발생할 수 있는 공통 문제점을 해결할 수 있습니다.

태스크 정보

메시지 플로우에서 HTTP 및 SOAP 노드를 사용할 때 문제점이 발생하면 다음 시나리오의 지시사항을 수행하여 문제점을 진단하고 해결합니다.

다음 질문에 대한 답변을 사용하여 HTTP 또는 SOAP 노드에서 발생한 문제점을 진단할 수 있습니다.

오류 메시지 BIP3689는 통합 서버를 배치하거나 다시 시작할 때 실행됩니다.

프로시저

  • 시나리오: 메시지 플로우 구성에서 하나 이상의 메시지 플로우 노드에 WS-RM (Web Services Reliable Messaging) 을 구성합니다. 통합 서버에 구성을 배치하거나 통합 서버를 재시작하려고 하면 BIP3689 오류 메시지가 표시됩니다.
  • 설명: 배포 구성에서 두 개 이상의 메시지 흐름 노드가 URL 속성의 경로 접미사 에 대해 동일한 값을 가지고 있으며, 이러한 노드 중 하나 이상이 WS-RM을 사용하고 있습니다. 통합 서버가 다른 서버에 의도된 메시지를 받을 수 있기 때문에(이때 WS-RM 메시지 정렬이 중단됨) 동일한 URL을 두 번 사용할 수 없습니다.
  • 해결 방법: 동일한 통합 노드에 배포하려는 메시지 흐름 노드에서 URL 속성의 경로 접미사 값을 검토합니다. WS-RM을 사용하는 노드의 URL이 배치 구성의 다른 위치에서 사용되지 않는지 확인하십시오.

경고 메시지 BIP3690은 통합 서버를 배치하거나 다시 시작할 때 실행됩니다.

프로시저

  • 시나리오: 통합 서버에 하나 이상의 메시지 흐름에 SOAP 또는 HTTP 입력 노드가 포함되어 있습니다. 통합 서버를 배치하거나 재시작하려는 경우 BIP3690 경고 메시지가 표시됩니다.
  • 설명: 이 경고 메시지는 배포된 토폴로지의 SOAP 및 HTTP 노드 모두에서 URL 속성의 경로 접미사 에 동일한 값을 사용하고 있음을 나타냅니다. 둘 이상의 HTTP 노드 또는 둘 이상의 SOAP 노드에서 동일한 URL을 사용하는 경우 경고가 표시되지 않습니다.

    예를 들어, 확장 및 성능상의 이유로 여러 통합 서버에 동일한 플로우를 배치할 수 있습니다. 이 구성은 올바르며, 경고를 트리거하지 않습니다. 그러나 SOAP 및 HTTP 노드에서 동일한 URL을 사용하면 예상치 못한 동작이 발생할 수 있으며, 구성이 유효해도 항상 경고를 트리거할 수 있습니다.

    단일 통합 노드의 메시지 플로우에서 SOAP 노드 및 HTTP 노드를 사용하는 경우 통합 노드 리스너 또는 임베드된 통합 서버 리스너를 사용하여 HTTP 메시지를 핸들링하도록 선택할 수 있습니다. 구성에서 리스너가 SOAPInput 노드HTTPInput 노드 모두에서 수신할 수 있는 메시지를 수신하는 경우, 이 노드들의 URL 사양을 주의 깊게 확인해야 합니다. 두 URL 스펙 모두 수신되는 메시지와 일치하면 올바르지 않은 유형의 노드가 메시지를 받을 수 있으므로 처리에 실패하거나 예상치 못한 결과가 생성될 수 있습니다. 이러한 상황은 HTTPInput 노드와 SOAPInput 노드의 URL 속성에 대한 경로 접미사 에 동일한 값을 지정하는 경우 발생합니다. 스펙 중 하나 또는 모두에서 와일드카드를 사용하고 수신되는 메시지가 두 특성과 일치하는 경우에도 발생할 수 있습니다.

  • 해결 방법: HTTP 및 SOAP 입력 노드에서 URL 사양을 확인하고 메시지 라우팅이 의도한 대로 작동하는지 확인하세요.

HTTPRequest 노드를 사용하여 HTTPS 호출을 하면 A HandshakeException 가 발행됩니다

프로시저

  • 시나리오: HTTPRequest 노드를 사용하여 IBM® App Connect Enterprise 메시지 흐름에서 외부 웹 서비스로 HTTPS 호출을 시도하고 있습니다. 다음 오류가 수신됩니다.
    javax.net.ssl.SSLHandshakeException: 
    com.ibm.jsse2.util.h: PKIX path building failed:
    
    java.security.cert.CertPathBuilderException: 
    PKIXCertPathBuilderImpl could not build a valid CertPath.;
    
    internal cause is: 
    java.security.cert.CertPathValidatorException:
    The certificate issued by OU=Class 3 Public Primary Certification Authority,
    O="VeriSign, Inc.", C=US is not trusted;
    
    internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error
  • 설명: 통합 노드가 전체 인증서 경로를 빌드할 수 없습니다. 이 통합 노드의 키 저장소는 인증 기관(CA)의 이 체인에 있는 모든 인증서를 포함해야 합니다. 통합 노드가 서명된 인증서에서 디지털 서명을 확인하려는 경우 키 저장소는 해당 인증서를 발행하는 인증 기관(CA)의 공개 키를 포함해야 합니다. 이 공개 키가 서명된 인증서에서 자체 발행된 경우 키 저장소는 해당 인증서를 발행하는 CA의 공개 키를 포함해야 합니다. 이 체인은 통합 노드가 자체 서명된 인증서를 발행하는 루트 인증 기관에 도달할 때까지 계속됩니다.
  • 솔루션: 모든 필수 인증서를 키 저장소에 추가했는지 확인하십시오. 인증서 체인의 컴포넌트가 키 저장소에서 누락된 경우 genkey 옵션과 함께 keytool을 사용하여 키 저장소를 다시 작성하고 애플리케이션 인증서를 다시 가져오십시오.

HTTP 및 SOAP 노드에서 사용하는 리스너를 어떻게 확인할 수 있습니까?

프로시저

  • 시나리오: 메시지 흐름에 포함하는 HTTP 및 SOAP 노드는 통합 노드 리스너나 포함된 메시지 흐름이 배포되는 통합 서버에 정의된 내장 리스너를 사용할 수 있습니다.
    두 리스너 모두 다른 포트에서 다른 메시지 유형을 처리하여 HTTP 및 HTTPS 메시지를 모두 처리할 수 있습니다.
  • 솔루션: mqsireportproperties 명령을 사용하여 사용 중인 리스너를 정의하는 특성을 확인하십시오.
    1. 통합 노드 리스너를 사용하지 않는지 여부를 확인하십시오.
      mqsireportproperties INODE -b httplistener -o HTTPListener -n startListener 

      이 특성이 false인 경우 모든 통합 서버에 있는 모든 HTTP 및 SOAP 노드는 임베드된 리스너를 사용합니다.

    2. 통합 노드 리스너가 활성 상태이면 특정 통합 서버를 확인해야 합니다.

      예를 들어, integrationServerNameHTTP 노드에 대한 HTTP 메시지를 처리하는 데 사용되고 있습니다

      mqsireportproperties integrationNodeName -e integrationServerName -o ExecutionGroup  -n httpNodesUseEmbeddedListener

      이 특성이 true인 경우 이 통합 서버에 배치되는 모든 HTTP 노드가 임베드된 리스너를 사용합니다.

      이 정보를 알리려는 모든 통합 서버를 확인하십시오.

      청취자가 integrationServerNameHTTP 메시지를 처리하는 데 사용되고 있습니다

      mqsireportproperties integrationNodeName -e integrationServerName -o ExecutionGroup  -n soapNodesUseEmbeddedListener

      이 특성이 true인 경우(기본값) 이 통합 서버에 배치되는 모든 SOAP 노드가 임베드된 리스너를 사용합니다.

      이 정보를 알리려는 모든 통합 서버를 확인하십시오.

    3. 두 특성이 false인 경우 모든 통합 서버에 있는 모든 HTTP 및 SOAP 노드는 임베드된 리스너를 사용합니다. 통합 서버 특성의 값은 무시됩니다.

결과

HTTP 또는 SOAP 노드가 포함된 메시지 흐름에 문제가 발생하여 IBM 지원 센터에 제공할 추적 정보를 수집하려는 경우, 통합 서버를 추적하십시오. HTTP 또는 SOAP 노드에 대한 통합 노드 리스너를 사용하는 경우 HTTPListener 컴포넌트도 추적하십시오.

HTTPListener 추적을 어떻게 수집합니까?

태스크 정보

HTTP 노드 및 리스너에 대한 정보를 수집하려면 추적을 시작하고, 메시지 플로우를 실행한 후 추적 정보를 검색하고 형식화해야 합니다.

통합 서버와 HTTPListener 컴포넌트를 추적하십시오.

프로시저

  • 통합 서버에 대한 추적을 시작하십시오.
    예를 들어,
    mqsichangetrace INODE -t -e integrationServerName -l debug
  • 하나 이상의 통합 서버에 대해 통합 노드 리스너를 사용하는 경우 다음 두 가지 방법 중 하나로 HTTPListener 컴포넌트에 대한 추적을 시작하십시오.
    • 다음 옵션을 사용하여 추적을 시작하도록 mqsichangetrace 명령을 실행하여 모든 통합 노드 구성요소를 추적하십시오.
      mqsichangetrace component -t -b -l debug
      여기서, component는 통합 노드 이름입니다.

    • 다음 옵션을 사용하여 추적을 시작하도록 mqsichangeproperties 명령을 실행하여 HTTPListener 구성요소만 추적하십시오.
      mqsichangeproperties integrationNodeName -b httplistener -o HTTPListener 
      	-n traceLevel -v debug

다음 수행할 사항

요청된 경우 IBM 지원 센터로 보낼 수 있도록 추적 출력을 저장하십시오.

통합 노드의 성능에 영향을 주지 않도록 정보 수집을 완료하면 추적을 끄십시오.