티스토리 뷰
Web Service: 5. Spring Boot WSDL로 Spring WS 용 클래스 생성하기
Korean Eagle 2022. 12. 27. 22:12'어떻게 자바 클래스를 생성하는 것이 좋은방법일까'에 대한 내용이다. WS는 사용해 볼 기회가 거의 없어 그렇게 경험과 지식이 많지 않음을 이해하기 바란다.
1. 가장 최신 버전의 스프링 부트를 사용한다.현재 3.0.1이 최신이다. 스프링 부트 web service starter에는 spring ws가 포함되어 있는데 JAVA WS 구현이 포함되어 있다 .그래서 최신버전의 경우는 jakarta로 시작하는 ws 패키지를 볼 수 있다. Spring boot 2.6까지는 jaxb 모듈이 jakarta 표준을 따르지 않고 예전 버전을 사용하기 때문에 jaxb 2.3.1버전을 사용하여 javax.xml.bind 같이 javax로 시작하는 패키지를 포함해야 한다.
2. 다시 말하면 스프링에서 사용하는 jakarta나 java ee에 맞게 jaxb 모듈을 선택해야 한다는 의미다. jaxb모듈에서 wsdl로 자바 클래스를 생성하는 툴이나 maven plugin을 찾을 수 있다.
3. 현재 최신 버전의 스프링 부트3.0.1 버전에서 사용하는 jakarta 버전은 인터넷에서 쉽게 검색할 수 있다. SOAP을 이용한 WS를 개발하는 것은 어떻 방식으로 해도 다 돌아가기 마련이기 때문에 ws라이브러리와 jaxb 라이브러리 호환성에 신경쓰는 것이 가장 중요한 부분이다.
4. 다만 자바표준의 구현과 플러그인의 구현 출처를 통일시키는 것은 필요하다. jakarta에서 java ee 표준을 생성하기 때문에 이것을 관리하는 eclipse 그룹의 플러그인이 가장 신뢰가 간다. 그리고 예전의 자바 JDK에 포함된 것과 동일하게 이름이 무려 wsimport이다. wdsl2java, wdsl4java와 같은 아류보다 신뢰가 간다.
5. 아래는 스프링 부트 3.0.1에서 돌아가는 pom.xml이다. 아래는 하나의 wsdl로 만들어진 서비스에 대한 설정인데 멀티 wsdl설정도 가능하다. 아래의 경우 Information, Reservation 두 서비스에 대한 클래스 패키지를 생하는 예를 보여주고 있다. 최신 스프링 3.0.1에 걸맞게 jaxws-maven-plugin의 최신버전 4.0.0을 사용하고 있다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>h2o.imgate</groupId>
<artifactId>operaconsumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>operaconsumer</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
<jaxws-maven-plugin.version>4.0.0</jaxws-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>${jaxws-maven-plugin.version}</version>
<configuration>
<wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
<extension>true</extension>
</configuration>
<executions>
<execution>
<id>Reservation</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>http://-.-.-.-:-/-/Reservation.asmx?wsdl</wsdlUrl>
</wsdlUrls>
<packageName>-.service.reservation</packageName>
<extension>true</extension>
</configuration>
</execution>
<execution>
<id>Information</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>http://-.-.-.-:-/-//Information.asmx?wsdl</wsdlUrl>
</wsdlUrls>
<packageName>-.service.information</packageName>
<extension>true</extension>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot: H2 database web admin 화면 진입 안될 때 (2) | 2023.01.14 |
---|---|
Web Service: 4.Spring Boot 클라이언트 커스텀 헤더 2 (0) | 2022.12.27 |
Web Service: 3.Spring Boot 클라이언트 커스텀 헤더 (0) | 2022.12.26 |
Spring Boot : Spring Boot 과 JSP 사용하는 프로젝트 템플릿 (0) | 2021.06.28 |
Spring Boot : @ResponseStatus, @ExceptionHandler (0) | 2020.08.08 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- MYSQL
- 설정하기
- Validation
- RestTemplate
- crud
- Security
- jsp
- login
- spring boot
- 매핑
- hibernate
- 외부파일
- Spring
- one-to-many
- form
- 스프링부트
- XML
- 상속
- 스프링
- Angular
- Spring Security
- Many-To-Many
- WebMvc
- 자바
- 하이버네이트
- 로그인
- 설정
- mapping
- Rest
- one-to-one