인프런 커뮤니티 질문&답변

닉네임_한글 가능님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

섹션 1 Service Discovery Eureka Service Discovery 빌드 시 오류납니다.

해결된 질문

23.12.02 10:41 작성

·

1.3K

·

수정됨

0

IntelliJ Community 2021.2.3 버전으로 진행하고 있습니다.

컴파일 오류는 나지는 않지만 빌드 시 오류가 납니다.

 

어떤 부분이 잘못 되었는지 모르겠습니다.

 

어떻게 해야 될까요?

 

application.yml

server:
  port: 8761

spring:
  application:
    name: discoveryservice

  eureka:
    client:
      register-with-eureka: false
      fetch-registry: false

 

pom.xml

<?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.1.6</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>discoveryservice</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>discoveryservice</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <java.version>17</java.version>
      <spring-cloud.version>2022.0.4</spring-cloud.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>
   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
               <image>
                  <builder>paketobuildpacks/builder-jammy-base:latest</builder>
               </image>
            </configuration>
         </plugin>
      </plugins>
   </build>

</project>

 

DiscoveryserviceApplication.java

package com.example.discoveryservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class DiscoveryserviceApplication {

   public static void main(String[] args) {
      SpringApplication.run(DiscoveryserviceApplication.class, args);
   }

}

 

답변 3

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

2023. 12. 05. 11:14

안녕하세요, 이도원입니다.

메일로도 답변을 드렸는데, 여기에도 올려드리는게 좋을 것 같아 다시 남겨드립니다.

올려주신 applicationm.yml 파일의 내용을 아래와 같이 수정해 보시기 바랍니다. eurkea와 spring은 같은 Depth에 작성하셔야 합니다. (보내 주신 파일에서는 spring에 eureka가 포함되어 있는 형식이었습니다)

spring:
  application:
    name: discoveryService

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

감사합니다.

닉네임_한글 가능님의 프로필 이미지

2023. 12. 05. 20:52

네 이렇게 수정하니 동작하네요. 감사합니다.

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

2023. 12. 04. 11:05

안녕하세요, 이도원입니다.

오류가 발생한 부분에 대한 로그를 같이 공유해 주실 수 있을까요?

올려주신 코드로 저희 환경에서 실행했을 때 (코드도 모두 복사해서 사용), 이상없이 잘 기동되네요. 오류 코드 공유해 주시면, 원인을 파악하는데에 도움이 될 것 같습니다.

감사합니다.

닉네임_한글 가능님의 프로필 이미지

2023. 12. 04. 21:42

제가 log를 봤을 때는 오류가 나서 localhost는 호출해보지는 않았는데요. 호출해보니 정상적으로 웹페이지를 호출하네요.

 

혹시 메일로 보내드렸던 오류내용이 발생한 상태로 강의 듣고 진행해도 되나요?

0

인프런 AI 인턴님의 프로필 이미지

2023. 12. 04. 10:46

안녕하세요, 인프런 AI 인턴입니다.

문제가 발생한 부분을 정확히 파악하기 위해서는 오류 메시지의 상세 내용이 중요합니다. IntelliJ의 빌드나 실행 로그창에서 나타나는 에러 메시지를 확인해주시겠어요? 빌드 과정 중 방해가 될 수 있는 다른 프로세스가 실행되고 있지는 않은지, 포트 충돌이나 의존성 문제가 있는지도 확인해볼 필요가 있습니다.

또한, 제공해주신 application.xml 파일은 yml 형식으로 되어있으나 파일 확장자는 .xml로 되어있습니다. 이 부분도 오류의 원인이 될 수 있으므로 파일 확장자를 .yml로 변경해 보시길 권장드립니다. application.yml 혹은 application.properties로 변경하셔야 설정이 정상적으로 인식될 것입니다.

pom.xml 파일에서는 Spring Boot의 부모 의존성이 잘 설정되어있으며 Eureka Server와 관련된 의존성도 적절히 추가되어 있습니다. 다만, Spring Boot의 버전과 Spring Cloud의 버전이 호환되는지 확인해보셔야 할 것 같습니다. 경우에 따라 버전 호환성 문제로 빌드 오류가 발생할 수 있어, 이 부분도 체크하시고 문제가 있다면 호환되는 버전으로 변경해 보시기 바랍니다.

에러 메시지를 보고 추가적인 조언이 필요하시면, 오류 내용을 자세히 알려주시면 더 구체적인 해결 방법을 제시드릴 수 있을 것입니다.

닉네임_한글 가능님의 프로필 이미지

2023. 12. 04. 21:32

application.xml은 제가 임의로 파일명을 쓰면서 오타 난것이고, 실제 프로젝트 내에서는 강의상에 언급되어 있는 application.yml으로 생성되어 있는 상태입니다.

 

개발환경

- IntelliJ IDEA Community Edition 2021.2.3

- Java 17

- start.spring.io에서 초기 프로젝트 생성

  : Maven

   Spring Boot 3.2.0

   Java 17

 

아래는 수행했을 때 로그입니다. 확인 부탁드립니다.

 

혹시 첨부파일을 보낼 수 있는 메일주소나 등록할 수 있는 게시판이 있나요? 아래 로그는 일부만 발췌를 한 상태라 문제해결에 도움이 될지는 모르겠네요.

연락 가능한 메일 주소 있으면 안내 부탁드립니다. ㅠㅠ

 

 

2023-12-04T21:20:17.483+09:00 INFO 15496 --- [discoveryService] [ restartedMain] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server

2023-12-04T21:20:17.606+09:00 INFO 15496 --- [discoveryService] [ restartedMain] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}, exception=java.net.ConnectException: Connection refused: no further information stacktrace=jakarta.ws.rs.ProcessingException: java.net.ConnectException: Connection refused: no further information

at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:275)

at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:300)

at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:662)

at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:697)

at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:691)

at org.glassfish.jersey.internal.Errors.process(Errors.java:292)

at org.glassfish.jersey.internal.Errors.process(Errors.java:274)

at org.glassfish.jersey.internal.Errors.process(Errors.java:205)

at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)

at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:691)

at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:661)

at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:413)

at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:313)

at com.netflix.discovery.shared.transport.jersey3.AbstractJersey3EurekaHttpClient.getApplicationsInternal(AbstractJersey3EurekaHttpClient.java:266)

at com.netflix.discovery.shared.transport.jersey3.AbstractJersey3EurekaHttpClient.getApplications(AbstractJersey3EurekaHttpClient.java:213)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)

at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)

 

....

....

....

2023-12-04T21:20:17.608+09:00 INFO 15496 --- [discoveryService] [ restartedMain] com.netflix.discovery.DiscoveryClient : DiscoveryClient_DISCOVERYSERVICE/DESKTOP-VC1226Q:discoveryService:8761 - was unable to refresh its cache! This periodic background refresh will be retried in 30 seconds. status = Cannot execute request on any known server stacktrace = com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)

at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)

at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1045)

at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:958)

at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:396)

at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:247)

at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:242)