본문 바로가기
프로그래밍/세팅 및 오류

[wsdl to java with intellij] intellij에서 wsdl을 java파일로 변경하는 법 (wsdl url, 파일 둘다 가능)(Could not find or load main class com.sun.tools.internal.ws.WsImport ClassNotFoundException: com.sun.tools.internal.ws.WsImport)

by 노잼인간이라불립니다 2022. 7. 1.

프로젝트에서 wsdl을 java파일로 변경하는 업무를 맡게 되었는데, 무수한 삽질을 하고, 많은 레퍼런스들을 참조하였지만, 오류가 발생했었다. 그리고 블로그 형식으로 쉽게 알려주는 레퍼런스는 없는거 같아 이렇게 기록을 남겨본다.

 

일단 wsdl을 java파일로 intellij를 통해 변경하려면 ultimate버전을 사용해야된다. 무료 30일 평가판으로 사용할 수 있으니 결제가 부담스럽다면 이것을 추천한다.

 

예제에 사용되는 wsdl은 영화진흥위원회가 제공해주는 openAPI를 이용할 것이다. soap방식으로 제공해주는 api가 굉장히 드물지만 영진위는 제공해준다. 예제로 테스트해보기 용도로는 이만한게 없다 너무 감사할 따름이다.

 


그럼 본격적으로 시작해보자.

영진위 홈페이지의 openAPI 홈페이지를 접속해보자.(접속해서 api를 사용할 수 있는 키를 신청해서 발급받기 바란다.)

아래와 같은 화면이 나올것이다.

빨간색으로 표시된 것이 우리가 예제로 사용할 wsdl url이다.


그럼 start.spring.io 에 접속하여 프로젝트를 생성해보자. (gradle이던 maven이던 상관없다 dependency를 넣어주는 방식이 다를 뿐 나머지는 다 똑같다.) 디펜던시는 각자의 기호에 따라 알아서 필요한 것들을 넣으면 된다.(꼭 자바 8 버전을 사용 해야 한다. 상위버전은 나중에 설치할 JAX-WS 플러그인과 호환이 안된다.)


프로젝트를 생성하면 아래와 같이 프로젝트가 생성 될 것이다.

 


 

wsdl를 임포트하기 전에 plugin이 필요하다. Ctrl + Alt + S 을 눌러 환경설정에 들어가자.

필자는 이미 설치를 완료하였지만, Marketplace에 있는 jakarta EE: Web Services (JAX-WS) 플러그인을 설치 해주어야 한다.

 

 


 

설치가 완료 되었다면, java파일을 생성할 패키지를 하나 만든다. 필자는 wsdl로 명명했다.

 


폴더를 만들었다면 폴더를 클릭하고 상위 메뉴에서 Tools - XML WebServices and WSDL - Generate Java Code From WSDL 을 클릭해준다.

 


 

그럼 아래와 같은 창이 뜬다. Web service WSDL URL에 WSDL URL를 넣어주고 OK 버튼을 눌러준다.

 


그럼 이렇게  SOAP API을 사용하기 위한 WSDL 관련 파일들이 생기게 된다.  

 


이렇게 테스트 용으로 실행코드를 작성하면~~

 


 

이렇게 결과가 나오게 된다.

 

이 글이 많은 삽질을하는 개발자들에게 도움이 되길 바란다.

 

 

추가

현재 내용은 자바 8버전에서만 실행이 된다. java 9버전부터는 sun패키지가 사라져서

자바 상위버전에서 실행하고자 하면, 디펜던시를 추가적으로 추가해주어야 한다.

implementation 'com.sun.xml.ws:jaxws-rt:2.3.2'
implementation 'com.sun.xml.ws:rt:2.3.2'
implementation 'com.sun.xml.ws:jaxws-ri:2.3.2'

 

 

또한 apache CXF를 다운받아 TOOLS -> Web Services 에서 CXF를 다운받아 설정해주어야 한다.

3.5 버전인가 부터 JAVA17을 지원한다.