WebSphere Application Server V8에서는 JAX-WS 디스패치 클라이언트의 아웃바운드 메시지에서 SOAP 조치 설정을 결정하는 방법의 동작이 변경되었습니다. V8 이전 릴리스에서는 디스패치 클라이언트 애플리케이션이 SOAP 조치를 제공하지 않으면 JAX-WS 런타임 환경이 아웃바운드 메시지에서 SOAP 조치를 올바르게 전송하지 않았습니다. 그 대신 JAX-WS 런타임 환경은 SOAP 조치를 익명 조작으로 설정합니다. V8에서는 클라이언트 애플리케이션이 SOAP 조치를 제공하지 않으면 JAX-WS 런타임 환경이 발신 메시지를 구문 분석하여 호출할 조작을 결정하고 이 조작을 사용하여 SOAP 조치의 값을 적절하게 결정합니다.
이 규칙은 호출을 플래그 지정하여 다음과 같은 경우에 디스패치 클라이언트를 작성하게 합니다.
WebSphere Application Server traditional 및 Liberty의 코딩 우수 사례는 클라이언트 애플리케이션이 JAX-WS javax.xml.ws.BindingProvider 특성인 SOAPACTION_USE_PROPERTY 및 SOAPACTION_URI_PROPERTY를 사용하여 SOAP 조치를 제공하는 것입니다. 제공된 SOAP 조치가 사용되면 DISPATCH_CLIENT_OUTBOUND_RESOLUTION 특성의 설정과 관계없이 아웃바운드 메시지를 구분 분석하지 않게 됩니다.
이 예제에는 요청 컨텍스트에서의 SOAP 조치 설정에 대한 우수 사례 코드가 표시되어 있습니다. SOAPACTION_URI_PROPERTY를 설정하지 않았거나 SOAPACTION_USE_PROPERTY를 false로 설정하면 이 규칙이 createDispatch() 메소드에 대한 호출을 플래그 지정합니다.
예제:|
//Create a dispatch instance Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE); // Use Dispatch as BindingProvider BindingProvider bp = (BindingProvider) dispatch; // Configure RequestContext to send SOAPAction HTTP Header Map<String, Object> rc = bp.getRequestContext(); rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE); rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello"); |
이 구문 분석은 부담이 크므로 시스템 레벨(구문 분석을 항상 사용 안함으로 설정) 또는 JAX-WS 요청 메시지 컨텍스트(메시지당 구문 분석을 사용 안함으로 설정)의 WebSphere Application Server traditional에서 특성을 설정할 수 있습니다. 구문 분석을 사용하지 않으면 이전과 마찬가지로 아웃바운드 메시지의 SOAP 조치가 계속해서 익명 조작으로 설정됩니다. 구문 분석을 사용 안함으로 설정하는 특성은 상수 org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION과 문자열 값 jaxws.dispatch.outbound.operation.resolution.enable로 정의됩니다. 이 특성을 설정하지 않으면 이 특성이 문자열 true로 해석되어 아웃바운드 조작 분석이 사용함으로 설정됩니다. 이 특성을 false로 설정하면 아웃바운드 조작 분석이 사용 안함으로 설정됩니다.
추가 정보는 다음을 참조하십시오.