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

Il est bon application du monde utilisant Undowow. Quelqu'un peut-il donner un exemple avec Undertow + CompletableFuture ou RxJava? J'ai cherché mais sans succès.Undertow + CompletableFuture/RxJava

+0

quelles fonctionnalités essayez-vous d'obtenir exactement? – yosriz

+0

Je veux gérer les demandes ce qui interrogera les bases de données, donc jusqu'à la réponse de base de données Je veux gérer une autre demande – Romper

+0

s'il vous plaît regarder ma réponse ici, vous devez comprendre comment créer observable à partir de callbacks asynchrones: http://stackoverflow.com/ questions/42225722/rxjava-data-from-db-with-on-screen-list/42226534 # 42226534 – yosriz

Répondre

1

Voici le undertow Bonjour tout le monde avec 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"); 
    }); 
} 

Ceci est juste un exemple simpliste, le monde bonjour Undertow + RxJava, qui ne prend pas en compte la gestion des threads entre autres choses. J'ai utilisé Observable.create() pour envelopper le HttpHandler et son rappel à un Observable. Ce Observable représente le flux de la requête entrante que vous allez consommer (la partie exchangeObservable.subscribe()) pour gérer les demandes.

RxJava ne changera la grammaire de rappel à motif observable, plus offrant un bon ensemble d'opérateurs de les traiter: http://reactivex.io/documentation/operators.html

+0

Merci. Que voulez-vous dire par la gestion des threads? Avez-vous des exemples? – Romper

+1

Vous pouvez lire à ce sujet http://reactivex.io/documentation/scheduler.html et les liens donnés en bas. Par défaut, un Observable n'instancera pas de thread ou n'utilisera aucun mécanisme de parallélisme. Avant de sauter sur les Schedulers RxJava, regardez comment le travail sous-marin fonctionne. Généralement, le serveur Web gère la gestion des threads pour vous. –