• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

curl and undertow

18.12.05 22:32 작성 조회수 158

0

안녕하세요.

질문드리고 싶은 점이 몇 가지가 있습니다.

1) curl -I -k --http2 https://localhost:8443/hello 를 입력하면 curl: (1) Unsupported protocol 이라는 결과가 나와서 https://simonecarletti.com/blog/2016/01/http2-curl-macosx/ 에 나온 안내대로 진행을 했는데 결과가 바뀌지 않는데, 무엇이 문제일까요?

2) 의존성을 다음과 같이 입력했는데, 계속해서 Tomcat이 실행되는데 무엇이 문제일까요?

<?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>me.yun</groupId>
    <artifactId>dec04</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.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>
            <exclusions>
                <!-- Exclude the Tomcat dependency -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</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>
    </build>

</project>

3) 2)에서 입력한 의존성에 다음의 코드가 존재하는 상황입니다. 그런데 Error:(3, 37) java: package org.apache.catalina.connector does not exist 같은 에러가 나오는데 xml 설정이 잘못된 것일까요?

package me.yun.dec04;

import org.apache.catalina.connector.Connector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Dec04Application {

    @GetMapping("/hello")
    public String hello(){
        return "Hello Spring";
    }

    public static void main(String[] args) {

        SpringApplication.run(Dec04Application.class, args);
    }

    @Bean
    public ServletWebServerFactory serverFactory(){
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }

    private Connector createStandardConnector(){
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(8080);
        return connector;

    }
}

답변 1

답변을 작성해보세요.

0

1) curl에 대해서는 저도 잘 모르겠습니다.

2) 아마도 메이븐 의존성이 refresh 되지 않아서 그런거 같습니다. pom.xml에 의존성 설정은 맞게 하신거 같아요. 인텔리J에 오른쪽에 보면 maven 탭이 있는데 거기서 리프레시 버튼이 그 탭 왼쪽 상단에 있습니다. 그걸 몇번 클릭해서 의존성을 갱신하고 다시 시도해 보시면 될 수 있습니다.

3) 2번에 설정한 pom.xml에서 톰캣을 빼고 언더토를 넣어는데, 해당 코드에서는 톰캣(카탈리나)을 쓰려고해서 컴파일 에러가 나고 있는것으로 보이네요. 2)번처럼 pom.xml을 설정하셨다면 더이상 내장 톰캣을 띄우는 자바 코드는 사용할 수 없으니 해당 코드를 제거하거나 언더토용으로 바꾸셔야 할 거 같습니다.