2016-08-23 11 views
5

스프링 부트 SOAP Webservice 샘플 프로젝트를 사용하여 SOAP 웹 서비스를 생성합니다. 다음 코드를 동적으로 생성하면 WSDL에 Operations가 표시됩니다.SpringBoot SOAP 웹 서비스 동적 WSDL 생성이 작동하지 않음 RequestPayload 요소에서 요청 접미사를 제거하는 경우

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "AvailNotifRequest") 
@ResponsePayload 
public OTAHotelAvailNotifRS getAvailNotif(@RequestPayload AvailNotifRequest request) { 

하지만 이처럼 변경하려면 요청 요소가 필요합니다.

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "OTAHotelAvailNotifRQ") 
@ResponsePayload 
public OTAHotelAvailNotifRS getOTAHotelAvailNotifRQ(@RequestPayload OTAHotelAvailNotifRQ request) { 

나는 Spring web service dynamic wsdl not generating message for a schema element 대답은 우리가 AvailNotifRequest 같은 요청 요소 후 접미사 요청을 추가해야하지만 난 내 요청 입력으로 OTAHotelAvailNotifRQ 를 사용하려면 말한다이 링크에 비슷한 질문을 발견했다. 이렇게 입력 요청을 변경하면 wsdl에서 작업을 가져 오지 못하기 때문에 어떻게 사용할 수 있습니까? official Spring-WS documentation 따르면

답변

1

는 :

< 동적 WSDL>는 규칙을 사용하여 XSD 스키마로부터 WSDL을 만든다. 스키마에서 찾은 모든 요소 요소를 반복하고 모든 요소에 대한 메시지를 작성합니다. 그런 다음 정의 된 요청 또는 응답 접미어로 끝나는 모든 메시지에 대해 WSDL 작업을 만듭니다. 기본 요청 접미사는 Request입니다. 기본 응답 접미사는 Response이며, 이들은 각각 < dynamic-wsdl />에 requestSuffix 및 responseSuffix 속성을 설정하여 변경할 수 있습니다.

은 즉 디폴트 것과 다른 요청 및 응답 접미사를 지정하기 위해 DefaultWsdl11DefinitionsetRequestSuffixsetResponseSuffix를 사용할 수 있습니다. 위의 경우 예를 들면 다음과 같습니다.

wsdl11Definition.setRequestSuffix("RQ"); 
wsdl11Definition.setResponseSuffix("RS");