2017-02-15 73 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(); 
    } 
} 

这是hello世界应用程序使用的下游。 有人可以提供Undertow + CompletableFuture或RxJava的例子吗?我搜索了但没有成功。Undertow + CompletableFuture/RxJava

+0

什么功能是你想实现什么呢? – yosriz

+0

我想处理请求将查询数据库的内容,所以直到数据库响应我想处理另一个请求 – Romper

+0

请在这里查看我的答案,您需要了解如何从异步回调创建可观察数据: http://stackoverflow.com/问题/ 42225722/rxjava-data-from-db-with-on-screen-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,这还没有考虑到在其他的东西帐户线程管理。我使用Observable.create()来包装HttpHandler,它的回调为Observable。此Observable表示您将消耗的传入请求(exchangeObservable.subscribe()部分)处理请求的流程。

RxJava只会更改从回调的语法来观察的模式,再加上提供了良好的运算符来对付他们:http://reactivex.io/documentation/operators.html

+0

谢谢。线程管理是什么意思?你有一些例子吗? – Romper

+1

您可以阅读本主题http://reactivex.io/documentation/scheduler.html以及底部给出的链接。默认情况下,Observable不会实例化线程或使用任何并行机制。在使用RxJava Schedulers之前,先看看如何工作。通常web服务器为你处理线程管理。 –

相关问题