2017-02-15 5 views
0
public class HelloWorldServer { 

    public static void main(final String[] args) { 
     Undertow server = Undertow.builder() 
       .addHttpListener(8080, "localhost") 
       .setHandler(new HttpHandler() { 
        @Override 
        public void handleRequest(final HttpServerExchange exchange) throws Exception { 
         exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); 
         exchange.getResponseSender().send("Hello World"); 
        } 
       }).build(); 
     server.start(); 
    } 
} 

언더우드를 사용한 안녕 세계 응용 프로그램입니다. 누군가 Undertow + CompletableFuture 또는 RxJava로 예제를 제공 할 수 있습니까? 나는 수색했지만 성공하지는 못했다.Undertow + CompletableFuture/RxJava

+0

http://reactivex.io/documentation/operators.html 어떤 기능은 정확히 달성하기 위해 노력하고있다? – yosriz

+0

내가 쿼리를 처리 할 데이터베이스를 쿼리 할 때까지 데이터베이스 요청이 다른 요청을 처리하기를 원한다. – Romper

+0

내 대답을 여기 보시고, 비동기 콜백에서 관찰 가능을 만드는 방법을 이해해야한다. http://stackoverflow.com/ 질문/42225722/rxjava-data-from-db-with-onscreen-list/42226534 # 42226534 – yosriz

답변

1

여기 RxJava 2로 물러 안녕하세요 세계 수 있습니다

public static void main(final String[] args) { 
    Observable<HttpServerExchange> exchangeObservable = Observable.create(observableEmitter -> { 
     Undertow server = Undertow.builder() 
       .addHttpListener(8080, "localhost") 
       .setHandler(new HttpHandler() { 
        @Override 
        public void handleRequest(final HttpServerExchange exchange) throws Exception { 
         observableEmitter.onNext(exchange); 
        } 
       }).build(); 
     server.start(); 
     observableEmitter.setCancellable(() -> server.stop()); 
    }); 

    exchangeObservable.subscribe(exchange -> { 
     exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); 
     exchange.getResponseSender().send("Hello World"); 
    }); 
} 

이 그냥 단순한 예입니다, 다른 것들 사이에서 계정 스레드 관리를 고려하지 않는 안녕하세요 세계 물러 + RxJava. HttpHandler을 감싸기 위해 Observable.create()을 사용했으며 Observable으로 콜백했습니다. 이 Observable은 요청을 처리하기 위해 수신 할 수신 요청 (exchangeObservable.subscribe() 부분)의 흐름을 나타냅니다.

RxJava는 그들과 거래를하는 사업자의 좋은 세트를 관찰 패턴에 콜백에서 문법을 변경, 플러스 제공됩니다

+0

감사합니다. 스레드 관리 란 무엇을 의미합니까? 몇 가지 예가 있습니까? – Romper

+1

이 주제에서는 http://reactivex.io/documentation/scheduler.html과 하단에있는 링크를 읽을 수 있습니다. 기본적으로 Observable은 스레드를 인스턴스화하거나 병렬 처리 메커니즘을 사용하지 않습니다. RxJava Scheduler를 시작하기 전에 어떻게 작동하는지 살펴보십시오. 일반적으로 웹 서버는 스레드 관리를 처리합니다. –