반응형
프로젝트 의존성 테스트 목적의 실행에서 왜 에러가 나는지?
안녕하세요!
2년 만에 rsocket 테스트좀 해보려고 하는데,
실행하자마자 바로 에러가 나서 시간을 조금 허비했네요.
spring.start.io 에서 rsocket, r2dbc, lombok, h2만 추가하고 실행한 결과입니다.
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2022-06-11 14:20:57.805 ERROR 45141 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'rSocketServerBootstrap'; nested exception is reactor.netty.ChannelBindException: Failed to bind on [0.0.0.0:7000] at
...
~[main/:na] Caused by: reactor.netty.ChannelBindException: Failed to bind on [0.0.0.0:7000] Suppressed: java.lang.Exception: #block terminated with an error at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[reactor-core-3.4.18.jar:3.4.18] at reactor.core.publisher.Mono.block(Mono.java:1707) ~[reactor-core-3.4.18.jar:3.4.18] at org.springframework.boot.rsocket.netty.NettyRSocketServer.block(NettyRSocketServer.java:85) ~[spring-boot-2.7.0.jar:2.7.0] at
...
blocking 되었고, 0.0.0.0:7000 포트로 바인딩에 실패한다고 이해하였습니다.
rsocket 서버 실행과 관련된 문서를 찾아봐도 구현에는 문제가 없는 상태였습니다.
파일의 순서는 아래와 같습니다.
- build.gradle
- yaml
- main
- yaml
1. build.gradle
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'org.exam'
version = '0.0.1-SNAPSHOT'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-r2dbc'
implementation 'org.springframework.boot:spring-boot-starter-rsocket'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'io.r2dbc:r2dbc-h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.projectreactor:reactor-test'
}
tasks.named('test') {
useJUnitPlatform()
}
2. yaml
spring:
rsocket:
server:
port: 7000
transport: tcp
3. java.main
package org.exam;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RSocketApp {
public static void main(String[] args) {
SpringApplication.run(RSocketApp.class, args);
}
}
쿠버네티스를 하다가 확인했던 내용인데,
mac에서 80번 포트 바인딩, 0.0.0.0 호스트 설정이 불가능했던 기억이 떠올라서
혹시하는 마음에........ 호스트를 바꿔보았습니다.
4. 변경된 yaml
spring:
rsocket:
server:
port: 7000
transport: tcp
address: localhost
잘 되네요....
간단한 데모 하나 만드는데 시간을 너무 소비했습니다.
즐거운 코딩하시길..
반응형
'Java' 카테고리의 다른 글
실습으로 확인하는 tomcat server vs netty server (0) | 2022.07.12 |
---|---|
gradle docker image 생성하기: spring boot (0) | 2021.01.25 |
java isDigits, number parse exception 처리 (0) | 2020.05.11 |
Java 8 LocalDateTime convert date format: (0) | 2020.04.16 |
Java LocalDateTime으로 시간 체크 (0) | 2020.02.10 |