We use TomEE 7 (Tomcat + Java EE 7) for all of our REST APIs.
I find JAX-RS a great REST framework, in addition to using a few other parts of Java EE (CDI, JAX-B, BeanVal, etc).
We started using the (little known?) AsyncResponse feature of JAX-RS to go “reactive”, in combination with Akka.
Our stack now looks like below. I realize it’s way more than you asked in your question, but I guess to give a full picture…
- Kotlin (1.1.0-rc-91)
- TomEE 7 (7.0.2), which uses johnzon under the covers for JSON marshalling
- Akka 2.12
- ElasticSearch
- HazelCast
- DB2/PostgreSQL 9.4 for RDBM, and looking into ScyllaDB for NoSQL (c* drop-in)
- kaconf (kick-ass config)
- tinylog
- orika mapper (DAL/DTO to API models)
- ZooKeeper + Kafka
- Docker Engine Swarm 1.13 (as of ~2 weeks ago, heading to production in ~2-4 more)
- Kubernetes as our final state for Docker orchestration (Swarm is too bleeding edge)
- nginx for all things routing, proxying
- Investigating Mashape Kong for API gateway (we use openresty with some lua modules for http signature auth, so good fit)
- Jenkins currently, Concourse being stood up for Docker build+deploy