WildFly 애플리케이션 서버에 Spring Boot 배포

기본적으로 Spring Boot는 임베디드 Tomcat 서버와 함께 제공되며, 이를 통해 fat jar로 빌드하면 java -jar 명령을 실행하는 것처럼 간단하게 응용 프로그램을 배포할 수 있습니다. 그러나 배포를 위해 다른 JavaEE 또는 응용 프로그램 서버를 사용할 수도 있습니다. Spring Boot 프로젝트를 WildFly에 배포하는 방법을 살펴보겠습니다.

부인 성명

For most of the time deploying Spring Boot on application server like WildFly does not actually makes sense since embedded servers (Tomcat by default, Jetty,...) are part of Spring Boot itself.



Spring Boot 프로젝트를 WildFly에 배포하는 것은 세 부분으로 나뉩니다.
  • WildFly 설정(독립 실행형 에디션)
  • 새 Spring Boot 프로젝트 설정 및 구성
  • Spring Boot 프로젝트 빌드 및 배포 중

  • 1. WildFly 설정



    먼저download WildFly application server 다운로드가 완료되면 아카이브의 압축을 풀고 저장하고 WildFly 디렉토리에서 터미널을 엽니다.

    다음 단계는 WildFly 사용자를 설정하는 것입니다. 터미널은 bin 하위 디렉토리로 이동하고 Linux에서는 ./add-user.sh, Windows에서는 add-user.bat를 실행합니다. 그런 다음 다음 단계를 따르십시오.

    > What type of user do you wish to add?
    a (Management User)
    
    > Enter the details of the new user to add.
    Username: wildfly
    Password: w1ldFly!
    Re-enter Password : w1ldFly!
    
    > What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: <LEAVE BLANK>
    
    > Is this correct yes/no?
    yes
    
    > yes/no?
    yes
    
    > Press any key to continue . . .
    


    완료되면 ./standalone.sh(Linux) 또는 .\standalone.bat(Windows)를 사용하여 WildFly 서버를 실행할 수 있습니다. 초기화가 완료되면 다음 로그가 표시됩니다.

    15:28:47,740 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
    


    이제 브라우저에 http://127.0.0.1:9990 을 입력하고 관리자 자격 증명(이전 단계에서 정의)을 입력한 후 WildFly 관리 콘솔이 표시되어야 합니다.



    이것으로 WildFly 서버 설정을 완료하고 Spring Boot 프로젝트 설정으로 이동합니다.

    2. Spring Boot 프로젝트 설정 및 구성





    먼저 Spring Boot website에 프로젝트를 생성하겠습니다. 여기서 중요한 것은 패키징으로 War를 선택하는 것뿐입니다. 또한 다음 단계를 수행하려는 경우 Maven도 있습니다.

    그런 다음 Generate 버튼을 클릭하고 다운로드하고 압축을 푼 다음 프로젝트를 좋아하는 IDE로 가져옵니다(IntelliJ를 사용하지만 Eclipse, NetBeans, VSCode 등을 사용할 수도 있음).

    테스트 목적으로 간단한 HelloWorld API 엔드포인트를 생성합니다. 다음 코드를 작성하여 /src/main/java//HelloApi.java 아래에 Java 파일을 생성해 보겠습니다.

    @RestController
    public class HelloApi {
    
        @GetMapping("/hello")
        public String hello() {
            return "Hello from Spring Boot";
        }
    }
    


    빌드( mvn clean package ) 및 실행( java -jar /target/<APP-NAME>.jar )을 시도할 수 있습니다. http://localhost:8080/hello에 액세스하는 동안 Hello from Spring Boot 가 표시되어야 합니다.



    이제 WebFly에 배포하도록 Spring Boot 프로젝트를 구성해 보겠습니다. 먼저 프로젝트에서 Tomcat 내장 서버를 제거합니다. pom.xml에서 spring-boot-starter-tomcat 종속성을 찾고 <scope>가 설정되지 않은 경우 provided로 설정되어 있는지 확인합니다.

    <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-web</artifactId>
      <exclusions>
          <exclusion>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-classic</artifactId>
          </exclusion>
      </exclusions>
    </dependency>
    


    다음으로 WildFly 속성을 추가합니다.

    <properties>
        <java.version>15</java.version>
        <deploy.wildfly.host>127.0.0.1</deploy.wildfly.host>
        <deploy.wildfly.port>9990</deploy.wildfly.port>
        <deploy.wildfly.username>wildfly</deploy.wildfly.username>
        <deploy.wildfly.password>w1ldFly!</deploy.wildfly.password>
    </properties>
    


    분석해 보겠습니다. java.version는 프로젝트가 빌드되는 JDK 버전을 정의하고(이미 설정되어 있음), deploy.wildfly.XX는 WildFly에 앱을 배포하는 데 필요한 속성이며, hostport는 WildFly가 "살아 있는 ", usernamepassword는 이전 단계에서 정의한 것과 동일합니다.

    빌드 플러그인에서 사용할 수 있습니다.

    <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>2.0.2.Final</version>
        <executions>
            <execution>
                <phase>install</phase>
                <goals>
                    <goal>deploy</goal>
                </goals>
            </execution>
        </executions>
        <configuration>                
            <filename>${project.build.finalName}.war</filename>
            <hostname>${deploy.wildfly.host}</hostname>
            <port>${deploy.wildfly.port}</port>
            <username>${deploy.wildfly.username}</username>
            <password>${deploy.wildfly.password}</password>
        </configuration>
    </plugin>
    


    완료되면 모든 것이 아직 빌드 중인지 확인하고(run mvn clean package ) 다음 단계로 넘어갑니다.

    Spring Boot 프로젝트에서 마지막으로 수행할 작업은 컨텍스트 루트 경로를 설정하는 것입니다(/로 설정하여 앱을 domain.com/hello에서 사용할 수 있습니다). 먼저 /src/main/webapp/WEB-INF/jboss-web.xml 아래에 새 파일을 만들고 두 번째로 파일에 추가합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="
          http://www.jboss.com/xml/ns/javaee
          http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
        <context-root>/</context-root>
    </jboss-web>
    


    여기서 유일한 중요한 부분은 context-root를 정의하는 <context-root>/</context-root>입니다.

    이를 통해 프로젝트( mvn clean package )를 빌드하고 Spring Boot 프로젝트를 WildFly 서버에 배포합니다.

    3. WildFly에 스프링 부트 배포



    성공적으로 빌드한 후 .war 디렉토리에서 /target 파일을 찾아야 합니다. 이것은 WildFly에 배포할 프로젝트의 최종 형식입니다.

    WildFly의 관리 콘솔에서 navbar에서 Deployments를 선택한 다음 Upload Deployment를 선택했습니다.



    이제 우리가 해야 할 일은 war 파일을 업로드하고 배포하는 것입니다.



    성공적으로 배포한 후 http://127.0.0.1:8080/hello으로 이동하여 최종 결과를 확인할 수 있습니다.



    We could (and should) skip last step altogether and simply use Maven for deploying to WildFly by using

    mvn clean install
    


    소스 코드는 GitHub에서 사용할 수 있습니다.

    표지 사진: Pexels의 Min An

    좋은 웹페이지 즐겨찾기