Jboss и TomCat. Как это работает?
===================================

 Нам с коллегами по работе достался сервер с JBoss'ом, к сожалению без инструкции.  

  

С Java работаем впервые, поэтому возник вопрос: **как все это взаимодействует?**  

  

Я понимаю так:  

Клиентское приложение выполняет запрос к серверу.  

Tomcat (что-то вроде Apache и IIS) обрабатывает запрос.  

Java машина (что-то вроде среды ASP.NET) обрабатывает сервлеты, которые скомпилированы JDK.  

Далее эти сервелеты взаимодействую с БД и файлами.  

  

Скорее всего эта схема в корне неверная. В ней я не могу понять зачем нужен JBoss, когда есть TomCat.  

  

Насколько понимаю JBoss это что-то вроде библиотеки?  

  

И последний вопрос, где можно узнать принцип обработки запроса JBoss'ом?  

  

А так же что почитать? Есть ли хорошая литература? 

 JBoss — это реализация спецификации JavaEE (контейнер для EAR- и WAR-приложений).  

Tomcat — это частичная реализация JavaEE в той её части, которая включает Web-приложения (контейнер для WAR).  

  

Один другого дополняет. Для работы всего этого нужен JavaSE JDK — Oracle JDK или OpenJDK6 или 7 — в зависимости от требований развёртывания.  

  

В WAR-приложениях сервлеты компилируются заранее Java-компилятором в байткод *.class-файлов и созданием архива с *.class-файлами и ресурсами (*.war). JSP-страницы из *.war компилируются «на лету» в сервлеты при первом запросе. Во время первого запроса со стороны пользователей контейнер сервлетов (Tomcat) преобразует JSP-страницы (если они присутствуют) в сервлеты, компилируя с помощью Java-компилятора из JDK в байткод. JVM контейнера осуществляет JIT-компиляцию байткода сервлетов в нативный код и кэширование нативного кода в оперативной памяти для обработки последующих запросов пользователей.  

  

В EAR-приложениях контейнер (JBoss) производит похожую работу совестно с JVM по JIT-компиляции бинов (файлы *.class в *.ear) и кэшировании нативного кода в оперативной памяти для последующего многократного выполнения.  

  

Метаинформация, записанная в файлах *.war и *.ear, нужна для правильного развёртывания, «параметризации» значений свойств сервлетов и бинов, частичным управлением жизненным циклом приложений. 

 Аналогия неверна тем, что Java-машина является аналогом CLR.NET, а не ASP.NET  

Аналог ASP.NET в данной связке — это как раз-таки Tomcat.   

  

JBoss в базовом случае совершенно не нужен. JBoss — это реализация JavaEE (да, что-то вроде библиотеки). Ближайший аналог из мира .NET — Castle (общих у них две вещи: они оба обожают xml-файлы настроек и включают в себя столько функционала, что никто в мире никогда не использовал весь одновременно).