기존 wsdl 파일을 wsdl2java 사용하여 java 파일 추출하
Posted by Albert 20Day 16Hour 2Min 28Sec ago [2026-02-17]
이 방법은 프로젝트 설정과 무관하게 자바 파일( .java)만 깔끔하게 뽑아낼 때 최고입니다.
1. Apache CXF 다운로드 및 준비
- Apache CXF 다운로드 페이지에서 최신 버전(예: 4.0.x)의 'Binary Distribution' (zip) 파일을 받습니다.
- 압축을 적당한 곳(예: C:\cxf)에 풉니다.
- bin 폴더 안에 wsdl2java.bat(윈도우) 또는 wsdl2java(맥/리눅스) 파일이 있는지 확인합니다.
2. 터미널에서 즉시 실행 (한 줄 명령어)
터미널(CMD 또는 PowerShell)을 열고 아래 명령어를 입력합니다. (주소만 알고 있다면 파일로 저장할 필요도 없습니다.)
윈도우 기준:
Bash
' CXF bin 폴더로 이동 후 실행 C:\cxf\bin\wsdl2java -d C:\output_folder -p com.my.project.generated -encoding UTF-8 http://기존서버주소/service?wsdl
- -d: 생성된 .java 파일들이 저장될 위치 (폴더를 미리 만들어두세요).
- -p: 생성될 클래스들의 패키지 경로 (예: com.company.soap).
- http://...wsdl: 알고 계신 WSDL 주소를 그대로 넣으세요.
3. Axis 1.x 마이그레이션용 '필수' 옵션 추가
Axis 1.x는 표준과 살짝 어긋나는 경우가 많아, 그냥 생성하면 호환성 문제가 생길 수 있습니다. 아래 옵션들을 추가해서 실행하는 것을 강력 추천합니다.
Bash
wsdl2java -d ./src -p com.example -fe jaxws21 -autoNameResolution -encoding UTF-8 http://주소?wsdl
- -fe jaxws21: 기존 Axis 시스템이 아주 옛날 방식일 때, 구형 JAX-WS 2.1 호환 모드로 생성하여 파싱 에러를 줄여줍니다.
- -autoNameResolution: WSDL 내에 이름이 중복되는 요소가 있을 때, 툴이 알아서 이름 뒤에 숫자를 붙여 충돌을 막아줍니다. (Axis WSDL에서 자주 발생)
- -verbose: 진행 과정을 상세히 보여줍니다. 에러 확인용으로 좋습니다.
4. 생성된 파일 확인
명령어가 성공하면 지정한 폴더(-d)에 패키지 구조대로 자바 파일들이 생깁니다.
- ObjectFactory.java: JAXB 객체 생성을 도와주는 팩토리 클래스.
- 서비스인터페이스.java: @WebService 어노테이션이 달린 핵심 인터페이스.
- DTO 클래스들: List<String> 등이 포함된 데이터 객체들.
가장 쉬운 활용법
- 위 방법으로 생성된 자바 파일들을 통째로 복사합니다.
- 현재 진행 중인 Spring Boot 프로젝트의 src/main/java 아래에 붙여넣습니다.
- Spring Boot + CXF 설정만 해주면 끝입니다.