2010-04-14 2 views
2

spring-ws를 사용하여 POX 클라이언트 (XSD에서 jaxb2에서 생성)를 만들었지 만 SOAP 클라이언트 (WSDL에서 생성)를 생성하는 방법은 혼란 스럽습니다. 나는 스텁을 생성하기 위해 wsimport를 사용하고 있지만 이것이 스프링 -와 함께 사용하기에는 너무 먼 단계 인 것처럼 보입니다. 스텁은 실제로 POX 클라이언트와 마찬가지로 스프링이 전송을 처리하는 전송을 처리합니다. 그래서, 내 질문은 : wsimport 또는 jaxb2 (POX 클라이언트와 같은)를 통해 전송 개체를 생성 할 수 있습니까? 아니면 WebServiceTemplate에서 호출/전송합니까?WSDL의 Spring-ws 클라이언트

답변

5

예, 가능합니다.

XSD를 wsdl에서 가져오고 가져 오지 않았는지 확인하십시오.

xsd에서 Point xjc (Jaxb2부터)를 생성하여 클래스를 생성하십시오.

이제 스키마를 확인하십시오.

RequestElement requestElement = new RequestElement(); 
ResponseElement responseElement = (ResponseElement) webServiceTemplate.marshalSendAndReceive(requestElement); 

그렇지 않으면 (참조 복합 유형)이 사용 :

요청 및 응답 요소가 포함 된 경우 복잡한 유형이 사용

RequestType requestType = new RequestType(); 
JAXBElement<RequestType> request = new ObjectFactory().createRequestType(requestType); 
ResponseType responseType = ((JAXBElement<ResponseType>) webServiceTemplate.marshalSendAndReceive(request)).getValue(); 

RequestElement을 ResponseElement, RequestType 및 ResponseType은 물론이다 단지 예입니다. 스키마에서 생성 한 Xjc 클래스로 대체하십시오.

+0

이것은 스프링 WS와 JAXB2를 사용하여 웹 서비스 클라이언트를 설정하는 데 도움이되었습니다. 그대로 가져온 RequestElement와 ResponseElement는 가져 오기 오류를 일으켰습니다. 그것들은 사용하고자하는 실제 요소에 대한 자리 표시 자일뿐입니다 :) 아마도 여러분은 그것을 알아야합니다. – chris

+0

좋은 지적. 감사 ! 내 대답을 편집했습니다. –

관련 문제