Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Servlet or Reactive Stacks: The Choice is Yours. Oh No...The Choice is Mine!

2,040 views

Published on

SpringOne Platform 2017
Rossen Stoyanchev, Pivotal

"Spring Framework 5.0 provides a choice of two web stack. One is the existing Servlet based Spring MVC and the other is the Reactive Streams (and Reactor) based Spring WebFlux that also supports non-Servlet containers such as Netty and Undertow. To make the choice even more interesting in 5.0 Spring MVC also supports the use of reactive libraries for orchestrating remote HTTP service calls, using reactive data repositories, and so on.

In this session we'll try and make sense of these options by comparing the execution models of each stack in the context of several common web application scenarios as well as some additional scenarios that have been harder to do on a traditional Servlet stack.

The session will you help you to understand just how much reactive mileage you can get out of your Servlet stack and what more you can do with a reactive stack. We'll use sample code to demonstrate reactive features and behavior (e.g. back pressure) on each stack.

Knowledge of using reactive libraries such as Reactor or RxJava is very helpful but not required for this session."

Published in: Technology
  • Be the first to comment

Servlet or Reactive Stacks: The Choice is Yours. Oh No...The Choice is Mine!

  1. 1. ??
  2. 2. Asynchronicity Thread pools
  3. 3. Event loop Coroutines Actors Asynchronicity Thread pools Fibers / Project Loom
  4. 4. Event Loop
  5. 5. Tomcat, Jetty, … Servlet API Blocking I/O Controller + Reactive client
  6. 6. History of Servlet API
  7. 7. Controller + Reactive client
  8. 8. Controller + Reactive client
  9. 9. Blocking not expected WebFilter WebHandler Tomcat, Jetty, …Netty Even Loop WebFilter
  10. 10. WebFilter, WebHandler Mono<Void>
  11. 11. Flux<DataBuffer> getBody()
  12. 12. writeWith(Flux<DataBuffer>)
  13. 13. Flux<DataBuffer> Flux<T>
  14. 14. ||
  15. 15. ||
  16. 16. 50
  17. 17. 51
  18. 18. 53

×