When i'm using PHP i use it with PHP-FPM and Nginx. The Nginx receives the request and communicates to PHP-FPM who sets the PHP variables like $_SERVER, $_POST and etc. The PHP-FPM has some working processes that process the incoming requests and probably a queue to save the requests when the working processes are busy. When the PHP ends the processing of the current request everything gets cleaned for the next request. How this works in Java EE? I've been trying to understand this for days but i just can't get into the point.
So, when the HTTP request gets into the Java EE server what the Java EE server does? It simply gets a thread from a pool and sends the request to that thread?
What class is used to first get the request and start processing?
Does the server have a queue for requests?
Does the server have more than one thread pool?
Where does the server use the thread pools?
I also i would like to know if there is a diagram or something to help me understand how the specifications are related to each other i'm overwhelmed by the permutations of implementations so i would like to learn the Java EE by the specifications.
I'm asking this because i would like to know how the platform works and by this i mean: How the jars i'm blindly including on my project interact with the server, what pieces of the server do i really need to think about when i'm developing certain kind of applications.
If you don't know the answer for any of my questions, please leave a comment about the questions, so i can know if there is something wrong with them.
If you know any source where i can learn this content it would also be very welcomed.