[SPRING] 내 Spring Boot App이 시작 직후 항상 종료되는 이유는 무엇입니까?
SPRING내 Spring Boot App이 시작 직후 항상 종료되는 이유는 무엇입니까?
이것이 제 첫 번째 스프링 부트 코드입니다. 불행히도, 항상 종료됩니다. 내 웹 클라이언트가 브라우저에서 일부 데이터를 가져올 수 있도록 계속 실행될 것으로 예상했습니다.
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
[@localhost initial]$ java -jar build/libs/gs-spring-boot-0.1.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 09:20:24.805 INFO 14650 --- [ main] hello.SampleController : Starting SampleController on localhost.localdomain with PID 14650 (/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boot-0.1.0.jar started by xxx)
2014-03-13 09:20:25.002 INFO 14650 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:28.833 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Registering beans for JMX exposure on startup
2014-03-13 09:20:30.148 INFO 14650 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
2014-03-13 09:20:30.154 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'requestMappingEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=requestMappingEndpoint]
2014-03-13 09:20:30.316 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'environmentEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=environmentEndpoint]
2014-03-13 09:20:30.335 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'healthEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=healthEndpoint]
2014-03-13 09:20:30.351 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'beansEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=beansEndpoint]
2014-03-13 09:20:30.376 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'infoEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=infoEndpoint]
2014-03-13 09:20:30.400 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'metricsEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=metricsEndpoint]
2014-03-13 09:20:30.413 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'traceEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=traceEndpoint]
2014-03-13 09:20:30.428 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'dumpEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=dumpEndpoint]
2014-03-13 09:20:30.450 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'autoConfigurationAuditEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=autoConfigurationAuditEndpoint]
2014-03-13 09:20:30.465 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'shutdownEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=shutdownEndpoint]
2014-03-13 09:20:30.548 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'configurationPropertiesReportEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=configurationPropertiesReportEndpoint]
2014-03-13 09:20:30.589 INFO 14650 --- [ main] hello.SampleController : Started SampleController in 7.396 seconds (JVM running for 9.569)
2014-03-13 09:20:30.608 INFO 14650 --- [ Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:30.610 INFO 14650 --- [ Thread-2] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0
2014-03-13 09:20:30.624 INFO 14650 --- [ Thread-2] o.s.b.a.e.jmx.EndpointMBeanExporter : Unregistering JMX-exposed beans on shutdown
제발 조언.
감사
추신 build.gradle은 오류입니다.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
위의 라인을 과감하게 제거하면 모든 것이 작동합니다. 내 응용 프로그램 컨텍스트가 올바른 것입니다. 감사 데이브
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 13:58:08.965 INFO 7307 --- [ main] hello.Application : Starting
Application on with PID 7307 (/ladev/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boo
t-0.1.0.jar started by xxx)
2014-03-13 13:58:09.021 INFO 7307 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshi
ng org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@45490eb5: startup
date [Thu Mar 13 13:58:09 MDT 2014]; root of context hierarchy
2014-03-13 13:58:09.653 INFO 7307 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overridi
ng bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=fal
se; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanNam
e=org.springframework.boot.actuate.autoconfigure.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration;
factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class
path resource [org/springframework/boot/actuate/autoconfigure/ErrorMvcAutoConfiguration$WhitelabelErrorView
Configuration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3;
dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconf
igure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; in
itMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/au
toconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
해결법
-
==============================
1.해결 : 클래스 경로에 포함 된 컨테이너 (예 : Tomcat)가 없기 때문에 앱이 웹 앱이 아닙니다. 고정 된 하나 추가. Maven을 사용하고 있다면 pom.xml에 다음을 추가하십시오 :
해결 : 클래스 경로에 포함 된 컨테이너 (예 : Tomcat)가 없기 때문에 앱이 웹 앱이 아닙니다. 고정 된 하나 추가. Maven을 사용하고 있다면 pom.xml에 다음을 추가하십시오 :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Gradle (build.gradle)의 경우
dependencies { compile 'org.springframework.boot:spring-boot-starter-web' }
-
==============================
2.수정 방법은 다음과 같습니다.
수정 방법은 다음과 같습니다.
다음과 같은 메시지를 찾습니다.
그러한 메시지가있는 경우 로컬 Maven 저장소를 삭제하고 다시 시도하십시오.
-
==============================
3.나는 같은 문제를 가지고 있었지만 내가 제거했을 때
나는 같은 문제를 가지고 있었지만 내가 제거했을 때
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
그것은 다시 일하기 시작했습니다.
-
==============================
4.제 경우에는 메소드의 리턴 값을 사용하지 않는 정적 분석 오류를 수정했을 때 문제가 발생했습니다.
제 경우에는 메소드의 리턴 값을 사용하지 않는 정적 분석 오류를 수정했을 때 문제가 발생했습니다.
내 Application.java의 이전 작업 코드는 다음과 같습니다.
public static void main(String[] args) { SpringApplication.run(Application.class, args); }
문제를 일으킨 새로운 코드는 다음과 같습니다.
public static void main(String[] args) { try (ConfigurableApplicationContext context = SpringApplication.run(Application.class, args)) { LOG.trace("context: " + context); } }
분명히 리소스 블록 시도는 응용 프로그램을 시작한 후 컨텍스트를 닫습니다. 응용 프로그램이 상태 0으로 종료됩니다.이 경우는 snarqube 정적 분석에 의해보고 된 리소스 누수 오류를 무시해야합니다.
-
==============================
5.어쩌면 그것은 당신의 코드에 맞지 않지만 다음과 같은 코드 스 니펫을 가지고 있다면 알아 냈습니다 :
어쩌면 그것은 당신의 코드에 맞지 않지만 다음과 같은 코드 스 니펫을 가지고 있다면 알아 냈습니다 :
@SpringBootApplication public class SpringBootApacheKafkaApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApacheKafkaApplication.class,args).close(); } }
close () 메소드를 제거하면된다. 그게 내 문제를 해결 한거야! 어쩌면 나는 그 사람을 도울 수있다.
-
==============================
6.바로 대답은 스프링 부트 웹 앱을 시작한 직후에 왜 닫았 을까요? 스타터 - 바람둥이가 설정되지 않고 IDE를 통해 설정되고 실행되는 경우 제공된 범위를 주석 처리해야합니다. 명령을 실행하는 동안 범위가 문제를 만들지 않습니다. 이유가 궁금합니다.
바로 대답은 스프링 부트 웹 앱을 시작한 직후에 왜 닫았 을까요? 스타터 - 바람둥이가 설정되지 않고 IDE를 통해 설정되고 실행되는 경우 제공된 범위를 주석 처리해야합니다. 명령을 실행하는 동안 범위가 문제를 만들지 않습니다. 이유가 궁금합니다.
어쨌든 내 추가 생각을 추가했습니다.
-
==============================
7.내 경우에는 다음과 같이이 문제를 해결했습니다.
내 경우에는 다음과 같이이 문제를 해결했습니다.
내 마지막 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bhaiti</groupId> <artifactId>spring-boot-rest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-rest</name> <description>Welcome project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </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> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> </project>
-
==============================
8.스프링 부트 2.0.0이이 작품
스프링 부트 2.0.0이이 작품
바꾸다
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
와
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.6</version> </dependency>
-
==============================
9.또 다른 가능성은,
또 다른 가능성은,
나는 바꿨다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
와
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
아무런 문제없이 시작되었습니다.
from https://stackoverflow.com/questions/22380119/why-does-my-spring-boot-app-always-shutdown-immediately-after-starting by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링의 순환 의존성 (0) | 2018.12.11 |
---|---|
[SPRING] Spring WebSocket @SendToSession : 특정 세션에 메시지 보내기 (0) | 2018.12.11 |
[SPRING] @ 트랜잭션 (propagation = 전파 .REQUIRED) (0) | 2018.12.11 |
[SPRING] 스프링 부트가 시작된 후 코드 실행하기 (0) | 2018.12.11 |
[SPRING] Spring을 사용하여 web.xml의 루트에 매핑하면 정적 리소스를 찾을 수 없습니다. (0) | 2018.12.11 |