JMS 프로토콜을 통한 SOAP

웹 서비스 엔진은 클라이언트와 서버 사이의 SOAP 메시지를 통신하기 위해 HTTP에 대한 대체로서 JMS(Java™ Message Service) 준수 메시징 전송을 통해 새로운 산업 표준 SOAP를 지원합니다.

지원된 구성 지원된 구성: 이 제품은 새로운 산업 표준 SOAP over JMS 프로토콜을 지원합니다. JMS를 통한 SOAP 스펙은 여러 공급업체의 구현 간에 상호 운용이 가능하도록 SOAP 메시지에 JMS 준수 전송을 사용하기 위한 표준 상호 운용성 가이드라인 세트를 제공합니다. 이 표준을 사용하는 경우, JAX-WS(Java API for XML Web Services) 및 JAX-RPC(Java API for XML-based RPC) 웹 서비스 모두에 대해 JMS 전송을 통해 SOAP 요청 메시지와 응답 메시지를 교환할 때 여러 공급업체의 클라이언트와 서버 컴포넌트가 혼합되어 상호 운용될 수 있습니다. JMS 전송을 사용하면 엔터프라이즈 Bean 기반 웹 서비스 클라이언트와 서버가 HTTP 연결이 아닌 JMS 큐 및 주제를 통해서 통신할 수 있습니다. sptcfg

IBM® 및 기타 공급업체는 2005년 이래 JMS 스펙을 통해 제안된 SOAP에 대해 작업합니다. 스펙은 W3C로 제출되고 작업 그룹이 설정됩니다. 이 초안 스펙의 현재 멤버 제출은 공동으로 2007년 10월에 발간되었습니다. 이 산업 표준에 대한 세부사항은 JMS 스펙을 통한 SOAP를 참조하십시오.

클라이언트 또는 서버 컴포넌트에 구현을 제공해야 하는 경우 JMS 전송 프로토콜을 통한 새로운 산업 표준 SOAP를 사용하십시오. 또한, 구현이 WebSphere® Application Server에서 웹 서비스 엔진에 의해 제공되는 클라이언트 및 서버 컴포넌트와 상호 운용될 수 있다는 것을 확인해야 합니다.

클라이언트 컴포넌트는 다음 프로토콜 제한조건을 따르는 동안 SOAP 요청 메시지를 전송하고 SOAP 응답 메시지를 수신할 책임이 있습니다.
  • 클라이언트는 javax.jms.BytesMessage 오브젝트 또는 javax.jms.TextMessage 오브젝트를 사용하여 서버에 SOAP 요청 메시지를 전송해야 합니다.
  • 클라이언트는 메시지를 대상 큐 또는 주제로 전송하기 전에 JMS 요청 메시지에서 다음 특성을 설정해야 합니다.
    • SOAPJMS_contentType: 이 특성은 HTTP 메시지에서 발견된 컨텐츠 유형 헤더와 유사하고 메시지의 컨텐츠 유형을 설명하기 위해 사용됩니다. 예를 들어, 텍스트 전용 SOAP 메시지(첨부 파일이 없는 메시지)에 이 JMS 메시지 특성을 위한 다음 값 설정이 있습니다.
      text/xml; charset="UTF-8"
      첨부 파일을 포함하는 SOAP 메시지의 경우, 다음 코드를 사용하여 JMS 메시지에서 SOAPJMS_contentType 특성을 설정하십시오.
      multipart/related; type="text/xml"; start="<...content-id_of_first_ part...>" 
      이 예제는 여러 부분으로 나누어진 메시지를 나타냅니다. 여기서 첫 번째 파트는 유형 text/xml이고 SOAP 엔벨로프를 포함합니다. 여러 부분으로 나누어진 메시지의 다른 파트는 다양한 첨부 파일을 포함합니다. HTTP 1.1 스펙은 컨텐츠 유형 헤더에 대한 추가 정보를 포함합니다.
    • enableTransaction: 서버 컴포넌트가 대상 큐 또는 주제에서 메시지를 수신하기 위해 사용된 동일한 트랜잭션에서 웹 서비스 요청을 처리하도록 하려는 경우 아웃바운드 JMS 요청 메시지에서 이 선택적 특성을 true로 설정하십시오. 이 특성은 JMS 스펙을 통한 SOAP에 대한 IBM 확장자입니다.
      우수 사례 우수 사례: 클라이언트 컴포넌트의 경우, 양방향 동기화 웹 서비스 요청으로 발생할 수 있는 동기화 문제점을 피하도록 단방향 또는 양방향 비동기 요청을 위해 이 특성만 true로 설정하십시오. 이 특성이 설정되지 않고 false의 기본값으로 설정되면 서버는 요청을 처리하기 위해 웹 서비스 엔진을 호출하기 전에 대상 큐 또는 주제에서 요청 메시지를 수신하기 위해 사용된 트랜잭션을 일시중단합니다.bprac
    • SOAPJMS_requestURI: 요청과 연관된 JMS 엔드포인트 URL에 이 특성을 설정해야 합니다.
    • SOAPJMS_soapAction: 이 선택적 특성이 웹 서비스 요청과 연관된 soapAction 값을 표시하도록 아웃바운드 JMS 요청 메시지에 설정됩니다. 이 특성은 HTTP 전송을 통해 웹 서비스 요청을 전송할 때 사용된 SOAPAction HTTP 헤더와 유사합니다. soapAction 특성의 값은 SOAP 요청의 인텐트를 식별하는 URI입니다. SOAPJMS_soapAction 특성이 지정되면, 요청의 대상을 판별하기 위해 서버 컴포넌트에 의해 사용됩니다. SOAP 스펙은 제한사항을 URI의 형식 또는 특이성에 두지 않고 URI가 해결할 수 있는 스펙도 요구하지 않습니다. 일반적으로, 이 특성은 WSDL 문서로부터 soapAction 값으로 설정됩니다.
    • SOAPJMS_targetService: 이 특성을 아웃바운드 JMS 요청 메시지에 설정해야 하고 값은 요청에 대해 JMS 엔드포인트 URL에서 발견되는 targetService 특성 값과 일치해야 합니다. 이 값은 요청이 디스패치되는 포트 컴포넌트를 판별하기 위해 서버 컴포넌트에 의해 사용됩니다.
    • SOAPJMS_bindingVersion: 이 특성은 클라이언트와 서버에서 사용된 프로토콜의 버전 번호를 표시합니다. 값을 1.0으로 설정하십시오.
  • 요청 메시지가 양방향 요청을 나타내고 이는 응답이 예상된다는 것을 의미하는 경우, 클라이언트 컴포넌트는 응답 메시지에 사용되는 큐를 지정하기 위해 JMS 메시지 JMSReplyTo 특성을 설정해야 합니다. JMS 메시지 setJMSReplyTo 메소드는 큐를 지정하는 데 사용됩니다. 웹 서비스 요청이 작성될 때마다 클라이언트가 임시 큐를 작성해야 하는 것을 방지하기 위해 클라이언트에서 영구적인 응답 큐를 구성하는 것으로부터 이익을 얻을 수 있습니다. 이 특별한 큐 작성에 대해 더 학습하려면 JMS를 통해 SOAP를 사용하여 웹 서비스를 위해 영구적 응답 큐를 구성하는 것에 대해 읽으십시오.
  • SOAP 요청 메시지가 단방향 요청을 나타내고 이는 응답이 예상되지 않는다는 것을 의미하는 경우, 클라이언트 컴포넌트는 JMS 메시지 JMSReplyTo 특성을 설정하지 않아야 합니다.
  • 클라이언트 컴포넌트는 응답 메시지가 JMS BytesMessage 오브젝트라고 가정할 수 있습니다.
  • 클라이언트 컴포넌트는 응답 메시지 상관 ID가 원래 요청 메시지의 메시지 ID와 일치한다고 가정할 수 있습니다.
서버 컴포넌트는 다음 프로토콜 제한조건을 따르는 동안 SOAP 요청 메시지를 수신하고 SOAP 응답 메시지를 전송할 책임이 있습니다.
  • 서버 컴포넌트는 JMS BytesMessage를 수신할 것으로 기대할 수 있습니다. BytesMessage 이외의 어떤 것이 서버 컴포넌트에 의해 수신되면, 응답이 예상되는 경우 서브코드(unsupportedJMSMessageFormat)를 가진 결함은 클라이언트로 리턴됩니다.
  • 서버 컴포넌트는 javax.jms.BytesMessage 오브젝트 또는 javax.jms.TextMessage 오브젝트를 수신할 것으로 예상할 수 있습니다. BytesMessage 또는 TextMessage 이외의 어떤 것이 서버 컴포넌트에 의해 수신되면, 응답이 예상되는 경우 서브코드(unsupportedJMSMessageFormat)를 가진 결함은 클라이언트로 리턴됩니다.
  • 서버 컴포넌트는 적절한 SOAP 응답 메시지를 생성하기 위해 적절하게 SOAP 요청을 처리해야 합니다.
  • JMS 요청 메시지의 JMSReplyTo 특성이 설정되는 경우에만 서버 컴포넌트는 클라이언트로 응답 메시지를 반송해야 합니다. JMS 메시지 getJMSReplyTo 메소드는 JMSReplyTo 특성 값을 JMS 메시지에서 검색하는 데 사용됩니다. 이 특성 값은 응답 대상을 표시합니다.
  • 응답 메시지를 보낼 때, 서버 컴포넌트는 요청과 동일한 메시지 유형을 사용해야 합니다. 요청이 BytesMessage로 수신되면 응답은 BytesMessage로 전송되어야 합니다. 유사하게, 요청이 TextMessage로 수신되면 응답은 TextMessage로 전송되어야 합니다.
  • 서버 컴포넌트는 메시지를 응답 큐에 보내기 전에 JMS 응답 메시지에서 다음 특성을 설정해야 합니다.
    • SOAPJMS_contentType: 이 특성은 메시지의 컨텐츠 유형을 설명하기 위해 사용됩니다. 이 주제의 클라이언트 책임 섹션에서 이 특성에 대한 설명을 참조하십시오.
    • correlation ID: JMS 응답 메시지의 상관 ID 특성을 원래 JMS 요청 메시지의 메시지 ID로 설정하십시오. 이 상관은 JMS 메시지 setJMSCorrelationID 메소드를 호출하여 수행됩니다.
    • SOAPJMS_bindingVersion: 이 특성은 클라이언트와 서버에서 사용된 프로토콜의 버전 번호를 표시합니다. 값을 1.0으로 설정하십시오.

다음 예제는 첨부 파일 없이 요청 메시지를 위한 JMS 메시지 toString 메소드를 호출하는 것으로부터 결과를 표시합니다.

  JMSMessage class: jms_bytes
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     null
  JMSTimestamp:     -1
  JMSCorrelationID: null
  JMSDestination:   null
  JMSReplyTo:       queue://_Q_7D6C2035383215AB00000000000F4241?busName=WsFvtBus
  JMSRedelivered:   false
    JMS_IBM_MsgType: 1
    SOAPJMS_contentType: text/xml; charset=UTF-8
    SOAPJMS_targetService: MaelstromWsEndpoint
    SOAPJMS_requestIRI: jms:jndi:jms/MyRequestQueue?jndiConnectionFactoryName=jms/MyConnFactory&targetService=MyPort1
    SOAPJMS_soapAction: "getQuote"
    SOAPJMS_bindingVersion: 1.0
3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d38223f3e3c73
6f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f7363
68656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e733a
7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d61222078
...
다음 예제는 첨부 파일을 가지고 요청 메시지를 위한 JMS 메시지 toString 메소드를 호출하는 것으로부터 결과를 표시합니다.
  JMSMessage class: jms_bytes
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     null
  JMSTimestamp:     -1
  JMSCorrelationID: null
  JMSDestination:   null
  JMSReplyTo:       queue://_Q_F0940794C5CC2F84000000000044AA21?busName=WsFvtBus
  JMSRedelivered:   false
    JMS_IBM_MsgType: 1
    SOAPJMS_contentType: multipart/related; 
		boundary=MIMEBoundaryurn_uuid_B6BAFEADB1886ADC241205525550237; 
		type="text/xml"; start="<0.urn:uuid:B6BAFEADB1886ADC241205525550238@apache.org>"
    SOAPJMS_targetService: MaelstromWsEndpoint
    SOAPJMS_requestIRI: jms:jndi:jms/WebSvcsJMSQ?jndiConnectionFactoryName=
			jms/WebSvcsJMS_CF&targetService=MaelstromWsEndpoint
    SOAPJMS_soapAction: attachment
    SOAPJMS_bindingVersion: 1.0
2d2d4d494d45426f756e6461727975726e5f757569645f4236424146454144423138383641444332
34313230353532353535303233370d0a436f6e74656e742d547970653a20746578742f786d6c3b20
636861727365743d5554462d380d0a436f6e74656e742d5472616e736665722d456e636f64696e67
3a20386269740d0a436f6e74656e742d49443a203c302e75726e3a757569643a4236424146454144
4231383836414443323431323035353235353530323338406170616368652e6f72673e0d0a0d0a3c
736f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f73
6368656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e73
3a7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612220
786d6c6e733a7873693d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368
656d612d696e7374616e63652220786d6c6e733a736f6170656e633d22687474703a2f2f73636865
...
다음 예제는 SOAP 응답 메시지를 위한 JMS 메시지 toString 메소드를 호출하는 것으로부터 결과를 표시합니다.
JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      4
JMSMessageID:     null
JMSTimestamp:     0
JMSCorrelationID: ID:cdddb857f078a266eb9a972f110a134f0000000000000001
JMSDestination:   null
JMSReplyTo:       null
JMSRedelivered:   false
contentType:
  multipart/related;
  type="text/xml"; 
  start="<961368106530.1092112854745.IBM.WEBSERVICES@yackerjr>";
  boundary="----=_Part_0_1655006754.1092112854745"
0d0a2d2d2d2d2d2d3d5f506172745f305f313635353030363735342e313039323131323835343734
350d0a436f6e74656e742d547970653a20746578742f786d6c3b20636861727365743d5554462d38
...

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_soapjmsstd
파일 이름:rwbs_soapjmsstd.html