안녕하세요
오늘은 Vert.x 로 간편하게 http 서버를 만들어 보겠습니다.
개발환경은 JetBrain의 인텔리제이 입니다.
먼저 Vert.x를 쉽게 추가 하기 위해서 Gradle 프로젝트를 생성해주세요.
Gradle이 설치되어 있지 않으신 분은 Preferencce - Plugins 에서 gradle 을 검색하면 쉽게 추가하실 수 있습니다.
새 프로젝트 생성을 눌러주시고 Gradle 프로젝트로 생성합니다.
JDK 는 1.7 이상 버전을 사용해주시면 됩니다.
프로젝트를 생성하려고 하면
다음과 같은 창이 나오는데 그냥 체크 하시고 다음으로 넘어가면 됩니다.
auto-import 는 말 그대로 자동으로 프로젝트에 import 를 해주는 것이고,
Create directories for empty content roots automatically 는 src 폴더를 자동으로 잡아주는 것입니다. 체크하시면 편합니다.
프로젝트를 생성하면 구조가 저렇게 생성됩니다.
뭔가 안드로이드 프로젝트와 비슷하게 생겼네요 ㅎㅎ,,
/main/java 에 Test.java 파일을 생성해줍시다.
그냥 자바 파일이 잘 컴파일 되는지 확인해봤습니다....
Vert.x 를 사용하기 위해서는 Gradle로 라이브러리 파일을 추가해주어야 합니다.
Vert.x 공식 홈페이지에 있는 메뉴얼입니다.
compile 'io.vertx:vertx-core:3.2.1'
을 gradle 에 추가해주시면 됩니다.
build.gradle 파일을 열어 다음과 같이 추가해줍시다.
추가해주는 김에 web 도 추가해주었습니다.
우리는 http 서버를 만들 것이기 때문에 web에 있는 기능도 사용할 것입니다.
복사하시기 쉽게 한번 더 보여드릴게요
compile 'io.vertx:vertx-core:3.2.1'
compile 'io.vertx:vertx-web:3.2.1'
dependencies 안에 저 두줄을 추가해주시면 gradle 에서 알아서 라이브러리 파일을 import 해줍니다.
다시 Test.java 로 돌아오겠습니다.
import io.vertx.core.Vertx;
/**
* Created by lk on 16. 4. 28..
*/
public class Test {
public static void main(String argp[]){
Vertx v = Vertx.vertx();
v.deployVerticle(new HttpServerVertical());
}
}
Test.java 를 다음과 같이 작성해줍니다.
Vertx 의 시작은 Vertx v = Vertx.vertx(); 로 vertx 를 받아오는 것으로 시작됩니다.
Verticle 에 대해서 조금 소개를 드리자면
Vertx 에서 가장 기본이 되는 구성 요소로, 실행과 배포가 되는 기본 단위라고 할 수 있습니다.
Verticles are chunks of code that get deployed and run by Vert.x. Verticles can be written in any of the languages that Vert.x supports and a single application can include verticles written in multiple languages.
You can think of a verticle as a bit like an actor in the Actor Model.
An application would typically be composed of many verticle instances running in the same Vert.x instance at the same time. The different verticle instances communicate with each other by sending messages on the event bus.
공식 홈페이지에서는 이렇게 설명하고 있군요.
나중에 나오는 Event bus 라는 것으로 서로 메시지를 주고받고 할 수도 있습니다.
지금은 그냥 java 에서의 한 클래스 혹은 메소드라고 생각합시다.
Test 클래스의 main 함수에서는 Vertx 를 불러온 후 HttpServerVerticle 버티클을 deploy 하고 있습니다.
다음은 HttpServerVerticle 소스 입니다.
public class HttpServerVertical extends AbstractVerticle {
Router router;
public void start() {
router = Router.router(vertx);
StaticHandler sHandler = StaticHandler.create("./www");
sHandler.setCachingEnabled(false);
router.route().handler(sHandler);
vertx.createHttpServer().requestHandler(router::accept).listen(8081);
}
public void stop() {
}
}
HttpServerVertical 이라는 클래스를 만든 후 AbstractVerticle 이라는 클래스를 extends 해주었습니다.
start() 메서드는 버티클이 deploy 되었을 때 실행되는 메서드이고,
stop()은 반대로 버티클이 undeply 되었을 때 실행되는 메서드입니다.
vertx 를 불러온 후 createHttpServer 라는 메소드를 호출해 주었습니다.
request 에 대한 핸들러는 router 에서 accept 하도록 하였고,
8081 포트로 listen 하도록 했습니다.
router 에 대한 핸들링은 StaticHandler 에서 맡아서 하는데,
이 클래스는 Static 으로 라우팅 가능한 html 파일 등을 이용할 때 사용됩니다.
./www 안에 있는 모든 파일들을 라우팅 하도록 하였습니다.
프로젝트로 돌아온 뒤 폴더를 하나 생성해줍니다.
이름은 아까 지정해 두었던 www 로 지정했습니다.
그리고 빌드를 한 후 deploy 를 하고 http://127.0.0.1:8081 로 접속해보면...
아무것도 찾을 수 없다고 하네요.
모든 route 를 accpet 으로 해주어서 그런가 봅니다.
이번에는 www 폴더 안에 index.html 파일을 하나 생성해봅시다.
그리고 다음과 같이 hello World 를 찍어줍니다.
그리고 다시 접속을 하면...
잘 나옵니다.
a.html 이라는 파일을 추가하고, 127.0.0.1/a.html 으로 접속해보았습니다.
역시 잘 나옵니다.
Vert.x 를 이용해서 쉽게 http 서버를 디플로이 해보았습니다.
다음에는 데이터를 핸들링해봅시다.
'IT > JAVA' 카테고리의 다른 글
[Vert.x] 0. Vert.x 설치하기 [리눅스 편] (0) | 2016.08.20 |
---|