JMS를 통한 SOAP을 사용하여 웹 서비스에 대한 영구 응답 큐 구성
산업 표준 JMS를 통한 SOAP 프로토콜을 사용하는 양방향 서비스 통신을 사용하는 경우 JAX-WS(Java™ API for XML Web Service) 또는 JAX-RPC(Java API for XML-based RPC) 웹 서비스 클라이언트에서 영구 응답 큐를 구성하면 이점을 얻을 수 있습니다. 영구 응답 큐를 사용하면 웹 서비스 요청이 호출될 때마다 클라이언트가 임시 응답 큐를 작성하지 않아도 되기 때문에 성능을 개선할 수 향상시킬 수 있습니다.
이 태스크 정보
영구 응답 큐는 다음 방법 중 하나로 웹 서비스 클라이언트에서 구성됩니다.
- JMS 엔드포인트 URL에서 선택적 replyToName 특성을 지정하십시오.
- 응답 큐를 프로그래밍 방식으로 설정하십시오.
- JAX-WS 웹 서비스 클라이언트의 경우 클라이언트 RequestContext 오브젝트에서 응답 큐의 JNDI 이름을 프로그래밍 방식으로 설정하십시오. RequestContext 오브젝트에서 응답 큐 JNDI 이름을 설정하면 해당 RequestContext 오브젝트를 사용하여 호출되는 모든 후속 요청에 영향을 미칩니다.
- JAX-RPC 웹 서비스 클라이언트의 경우 스텁 또는 호출 오브젝트에서 응답 큐의 JNDI 이름을 프로그래밍 방식으로 설정하십시오. 스텁 또는 호출 특성으로 응답 큐 JNDI 이름을 설정하면 해당 스텁 또는 호출 오브젝트를 사용하여 호출되는 모든 후속 요청에 영향을 미칩니다.
- 응답 큐를 JVM(Java Virtual Machine) 시스템 특성으로 설정하십시오. 응답 큐를 JVM 시스템 특성으로 설정하면 특정 JVM에서 실행되고 있는 모든 웹 서비스 클라이언트에 영향을 미칩니다. 다른 응답 큐를 사용해야 하는 여러 클라이언트가 같은 JVM에서 실행되고 있는 경우 이 옵션은 작동하지 않습니다. 대신 다른 두 옵션 중 하나를 사용하십시오.
이러한 옵션 중 하나를 사용하여 영구 응답 큐를 설정하려면 클라이언트 측 구성만 필요합니다. 웹 서비스 제공자에 대해 필요한 구성은 없습니다.
웹 서비스 클라이언트에서 응답 큐를 구성하기 전에 JMS 메시징 제공자의 일반 관리 기능을 사용하여 영구 응답 큐를 작성하십시오.
프로시저
다음 방법 중 하나를 사용하여 영구 응답 큐의 JNDI 이름을 구성하십시오.
- JMS 엔드포인트 URL에서 선택적 replyToName 특성을 지정하십시오. 예를 들면, 다음과 같습니다.
jms:jndi:jms/MyRequestQueue&jndiConnectionFactoryName=jms/MyCF&replyToName=jms/MyReplyQueue
- 클라이언트에서 응답 큐를 프로그래밍 방식으로 설정하십시오. 이 특성의 값은 String이고 응답 큐의 JNDI 이름을 나타냅니다.
- JAX-WS 웹 서비스 클라이언트의 경우 클라이언트 JAX-WS RequestContext 오브젝트에서 com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME 특성을 설정하십시오.
예를 들면, 다음과 같습니다.
((BindingProvider) port).getRequestContext().put (com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- JAX-RPC 웹 서비스 클라이언트의 경우 클라이언트 JAX-RPC 스텁 또는 호출 오브젝트에서 com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME 특성을 설정하십시오.
예를 들면, 다음과 같습니다.
((javax.xml.rpc.Stub) stub)._setProperty(com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- JAX-WS 웹 서비스 클라이언트의 경우 클라이언트 JAX-WS RequestContext 오브젝트에서 com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME 특성을 설정하십시오.
예를 들면, 다음과 같습니다.
- 응답 큐의 JNDI 이름을 JVM 시스템 특성으로 설정하십시오.
- Java 클라이언트 호출의 경우 명령 프롬프트에 다음 코드를 입력하십시오.
java -Dcom.ibm.websphere.webservices.JMSReplyQueueJndiName=jms/MyReplyQueue
- 애플리케이션에서 실행되고 있는 JVM의 경우 다음 조치를 수행하십시오.
웹 서비스 클라이언트 애플리케이션을 실행하는 애플리케이션 서버에 대해 관리 콘솔을 사용하여 JVM 시스템 특성을 설정하십시오.
사용자 정의 특성을 설정하려면 관리 콘솔에 로그온하여 JVM(Java Virtual Machine) 사용자 정의 특성 패널로 이동하십시오.
- 을 클릭하십시오.
- Name 특성을 com.ibm.websphere.webservices.JMSReplyQueueJndiName으로 설정하십시오.
- Value 특성을 jms/Permanent_Q로 설정하십시오.
- 확인을 클릭하여 변경사항을 저장하십시오.
- 변경사항을 노드와 동기화를 클릭하고 저장을 클릭하십시오.
- Application Server를 다시 시작하십시오.
- Java 클라이언트 호출의 경우 명령 프롬프트에 다음 코드를 입력하십시오.
결과
이제 웹 서비스 클라이언트가 영구 응답 큐로부터 JMS를 통한 SOAP 메시지를 수신할 수 있습니다.