48.1WebServiceTemplate로 웹 서비스 호출하기

SOAP 기반의 웹 서비스 Vs. RESTful 기반의 웹 서비스

SOAP의 대안으로 나온 것이 RESTful!

  • SOAP (Simple Object Access Protocol) : 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜

  • REST (Representational State Transfer) : 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식.

[출처] https://mygumi.tistory.com/55

응용 프로그램에서 원격 웹 서비스를 호출해야하는 경우 WebServiceTemplate 클래스를 사용할 수 있습니다. WebServiceTemplate 인스턴스는 종종 사용되기 전에 커스터마이징 될 필요가 있기 때문에 스프링 부트는 자동으로 구성된 하나의 WebServiceTemplate 빈을 제공하지 않습니다. 그러나 필요한 경우 WebServiceTemplate 인스턴스를 만드는 데 사용할 수있는 WebServiceTemplateBuilder를 자동 구성합니다.

다음 코드가 전형적인 예입니다.

@Service
public class MyService {

	private final WebServiceTemplate webServiceTemplate;

	public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
		this.webServiceTemplate = webServiceTemplateBuilder.build();
	}

	public DetailsResp someWsCall(DetailsReq detailsReq) {
		 return (DetailsResp) this.webServiceTemplate.marshalSendAndReceive(detailsReq, new SoapActionCallback(ACTION));

	}

}

기본적으로 WebServiceTemplateBuilder는 클래스 경로에서 사용 가능한 HTTP 클라이언트 라이브러리를 사용하여 적절한 HTTP 기반 WebServiceMessageSender를 검색합니다. 다음과 같이 읽기 및 연결 시간 초과를 사용자 정의 할 수도 있습니다.

HttpWebServiceMessageSenderBuilder

  • 클래스 경로를 기반으로 적절한 HTTP 라이브러리를 감지 할 수있는 WebServiceMessageSender 빌더.

@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
	return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()
			.setConnectTimeout(5000).setReadTimeout(2000).build()).build();
}

Last updated