• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

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

23.12.02 10:41 작성 23.12.04 22:57 수정 조회수 644

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

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

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

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

spring:
  application:
    name: discoveryService

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

감사합니다.

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

0

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

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

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

감사합니다.

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

 

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

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.04

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

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

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

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

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

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)