2017-05-15 1 views
0

REST API에 연결하여 응답을 보는 데 사용하는 간단한 스프링 부팅 응용 프로그램이 있습니다. 프로토 타이핑을위한 간단한 앱입니다. 내가 java.net.BindException 때문에 포트 9001의 던지고하지만 난에 실행하는 액추에이터를 구성 동일한 포트이며, 그것을 추가하기 전에 벌금을 실행중인 같은데요스프링 부트 | LifecycleProcessor가 초기화되지 않았습니다. lifecycle 메소드를 호출하기 전에 'refresh'를 호출하십시오. 예외

java.net.BindException: Address already in use: bind 
    at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_121] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.8.0_121] 
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:228) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:874) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:590) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:969) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:233) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:178) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:297) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:145) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration.createChildManagementContext(EndpointWebMvcAutoConfiguration.java:193) [spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration.afterSingletonsInstantiated(EndpointWebMvcAutoConfiguration.java:156) [spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:779) [spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at com.crossover.techtrial.java.se.TrialApplication.main(TrialApplication.java:12) [classes/:na] 

2017-05-15 22:17:45.906 ERROR 5488 --- [   main] o.apache.catalina.core.StandardService : Failed to start connector [Connector[HTTP/1.1-9001]] 

org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-9001]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:233) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:178) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:297) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:145) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration.createChildManagementContext(EndpointWebMvcAutoConfiguration.java:193) [spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration.afterSingletonsInstantiated(EndpointWebMvcAutoConfiguration.java:156) [spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:779) [spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at com.crossover.techtrial.java.se.TrialApplication.main(TrialApplication.java:12) [classes/:na] 
Caused by: org.apache.catalina.LifecycleException: service.getName(): "Tomcat"; Protocol handler start failed 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:976) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    ... 19 common frames omitted 
Caused by: java.net.BindException: Address already in use: bind 
    at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_121] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.8.0_121] 
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.8.0_121] 
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:228) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:874) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:590) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:969) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    ... 20 common frames omitted 

2017-05-15 22:17:45.912 INFO 5488 --- [   main] o.apache.catalina.core.StandardService : Stopping service Tomcat 
2017-05-15 22:17:45.919 INFO 5488 --- [   main] o.apache.catalina.core.StandardService : Stopping service Tomcat 
2017-05-15 22:17:45.930 INFO 5488 --- [   main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
2017-05-15 22:17:45.931 INFO 5488 --- [   main] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot[email protected]4228f269: startup date [Mon May 15 22:17:45 PKT 2017]; parent: org.springframework.boot[email protected]61df66b6 
2017-05-15 22:17:45.934 ERROR 5488 --- [   main] o.s.b.d.LoggingFailureAnalysisReporter : 

*************************** 
APPLICATION FAILED TO START 
*************************** 

Description: 

The Tomcat connector configured to listen on port 9001 failed to start. The port may already be in use or the connector may be misconfigured. 

Action: 

Verify the connector's configuration, identify and stop any process that's listening on port 9001, or configure this application to listen on another port. 

2017-05-15 22:17:45.935 INFO 5488 --- [   main] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot[email protected]61df66b6: startup date [Mon May 15 22:17:42 PKT 2017]; root of context hierarchy 
2017-05-15 22:17:45.935 WARN 5488 --- [   main] ationConfigEmbeddedWebApplicationContext : Exception thrown from LifecycleProcessor on context close 

java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.boot[email protected]61df66b6: startup date [Mon May 15 22:17:42 PKT 2017]; root of context hierarchy 
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:417) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1002) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:961) [spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:818) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at com.crossover.techtrial.java.se.TrialApplication.main(TrialApplication.java:12) [classes/:na] 

2017-05-15 22:17:45.936 INFO 5488 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Unregistering JMX-exposed beans on shutdown 
2017-05-15 22:17:45.936 INFO 5488 --- [   main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 

: 그러나 나는 다음과 같은 오류가 받고 있어요 클라이언트 기능 독립 실행 형 응용 프로그램으로 내 응용 프로그램을 실행할 때 항상 컨테이너를 다시 시작할 것이라고 생각했기 때문에 왜이 예외가 발생하는지 이해할 수 없습니다.

나머지 예외는 내가 왜 발생하는지 전혀 모른다. 그물에서 검색 한 후에 나는 그것이 pom.xml에서 어떤 것도 볼 수 없지만 충돌하는 의존성 때문에 찾을 수 있다는 것을 알았습니다.

내 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.crossover.techtrial.java.se</groupId> 
    <artifactId>trial</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>trial</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.3.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-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

내 application.properties :

spring.jpa.hibernate.ddl-auto=create 
spring.datasource.url=jdbc:mysql://localhost:3306/SampleDB 
spring.datasource.username=root 
spring.datasource.password=admin 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
management.port = 9001 
apiforest.baseuri = https://api-forest/.... 
read.timeout = 10000 
connect.timeout = 10000 

계정 DTO에 대한 나의 코드 :

package com.crossover.techtrial.java.se.dto; 

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Account 
{ 
    private String id; 

    private MonetaryAmount monetaryAmount; 

    public Account() 
    { 

    } 

    public String getId() 
    { 
     return id; 
    } 

    public void setId(String id) 
    { 
     this.id = id; 
    } 

    public MonetaryAmount getMonetaryAmount() 
    { 
     return monetaryAmount; 
    } 

    public void setMonetaryAmount(MonetaryAmount monetaryAmount) 
    { 
     this.monetaryAmount = monetaryAmount; 
    } 

} 

내 호출 코드 :

package com.crossover.techtrial.java.se; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringRunner; 
import org.springframework.web.client.RestTemplate; 

import com.crossover.techtrial.java.se.dto.Account; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class TrialApplicationTests 
{ 
    public static void main(String args[]) 
    { 
     RestTemplate restTemplate = new RestTemplate(); 
     Account[] accounts = restTemplate.getForObject("${apiforest.baseuri}" + "/pay/accounts", Account[].class); 
     System.out.println(accounts); 
    }*/ 


    @Test 
    public void contextLoads() 
    { 
    } 

} 

내 RestConfig 클래스 :

package com.crossover.techtrial.java.se.config; 


import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.http.client.ClientHttpRequestFactory; 
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; 
import org.springframework.web.client.RestTemplate; 

// To set the configuration parameters like read timeout and connect timeout for Rest Client 
@Configuration 
public class RestConfig 
{ 
    @Bean 
    public RestTemplate createRestTemplate(final ClientHttpRequestFactory clientHttpRequestFactory) 
    { 
     return new RestTemplate(clientHttpRequestFactory); 
    } 

    @Bean 
    public ClientHttpRequestFactory createClientHttpRequestFactory(@Value("${connect.timeout}") final int connectTimeout, 
      @Value("${read.timeout}") final int readTimeout) 
    { 
     HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); 
     factory.setConnectTimeout(connectTimeout); 
     factory.setReadTimeout(readTimeout); 
     return factory; 
    } 
} 

이 오류를 해결 도와주세요.

감사합니다.

+0

'netstat' (리눅스와 윈도우 모두에서)를 사용하여 해당 응용 프로그램이 해당 포트에서 수신 대기 중인지 확인할 수 있습니다 (netstat는 실행 파일의 이름도 알려줍니다). 불량 프로그램이 있거나 테스트 응용 프로그램의 교수형 인스턴스가있을 수 있습니다. – Andrei

+0

나는 그것을했다. 해당 포트에서 실행중인 항목이 없습니다. 나는 코드를 작성하지 않고 모든 것을 제대로 구성했는지 테스트하기 위해 한 번 실행했기 때문에 내 앱과 관련이 있다고 확신한다. 내 문제는 독립 실행 형 응용 프로그램으로 실행되고 내 작업 관리자에서도 볼 수 없기 때문에이 오류가 발생하는 이유입니다. – zhaider

답변

0

오늘 내 앱을 실행했을 때 충분히 재미있어하면서 오류가 발생하지 않았습니다. 나는 그것을 일으키는 원인을 모르지만 PC를 재부팅하는 것처럼 보였다.

+0

응용 프로그램을 시작하려는 포트가 다른 프로세스에서 사용 중입니다. 해당 포트에서 실행중인 프로세스를 종료 한 다음 응용 프로그램을 시작해야합니다. 포트에서 프로세스가 종료 되었기 때문에 PC를 다시 시작하면 작업이 완료되었습니다. – Hiren

4

응용 프로그램에서 사용하게 된 포트가 다른 응용 프로그램에서 이미 사용되었습니다. 포트를 사용하고 있던 PC 응용 프로그램을 재부팅하면 포트가 종료되고 포트가 해제됩니다. 이것이 재부팅 후 응용 프로그램이 실행 된 이유입니다.

windows에서 netstat -nao 명령을 사용하여 프로세스의 포트 번호와 PID를 확인할 수 있습니다.

관련 문제