[java] SOAP 웹 서비스에서 파일 업로드 방법

SOAP(Simple Object Access Protocol) 웹 서비스를 통해 파일을 업로드하는 방법은 Java에서 매우 간단합니다. 기본적으로, ‘MTOM(Message Transmission Optimization Mechanism)’을 사용하여 SOAP 메시지에 첨부 파일을 인코딩하고 디코딩할 수 있습니다. 이를 통해 효율적으로 대용량 파일을 전송할 수 있습니다.

1. 라이브러리 추가

먼저 Maven이나 Gradle과 같은 의존성 관리 도구를 사용하여 Apache CXF나 Spring Web Services와 같은 SOAP 웹 서비스 관련 라이브러리를 프로젝트에 추가해야 합니다.

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.4.5</version>
</dependency>

2. MTOM 활성화

SOAP 클라이언트에서 MTOM을 활성화해야 합니다. 이를 위해 클라이언트 생성 시 MTOM 관련 설정을 활성화해야 합니다.

HelloService service = new HelloService();
HelloPortType port = service.getHelloPort();
BindingProvider bp = (BindingProvider) port;
SOAPBinding binding = (SOAPBinding) bp.getBinding();
binding.setMTOMEnabled(true);

3. 파일 업로드

이제 파일을 업로드할 준비가 되었습니다. 파일을 Base64Binary로 인코딩하여 SOAP 메시지에 넣고, 서비스를 호출하여 파일을 업로드할 수 있습니다.

File file = new File("path/to/file");
DataHandler dataHandler = new DataHandler(new FileDataSource(file));
port.uploadFile("file name", dataHandler);

위의 예시에서 uploadFile은 업로드할 파일을 받는 웹 서비스의 메서드 이름을 나타냅니다.

파일 업로드 후에는 클라이언트가 파일을 성공적으로 업로드했는지 확인하기 위한 적절한 응답을 받게 됩니다.

이제 파일 업로드 동작이 구현된 Java에서의 SOAP 웹 서비스를 사용할 수 있게 되었습니다.

참고 자료